定义属性

- (IBAction)trainsformAction:(id)sender;@property(nonatomic,retain)UIImageView *imageView;
@property(nonatomic,assign)BOOL isRotation;
@property(nonatomic,retain)UIImageView *secImageView;
@property(nonatomic,retain)UIButton *button;
@property(nonatomic,assign)BOOL isSelect;
@property(nonatomic,retain)UIButton *goodButton;
@property(nonatomic,retain)UIView *myView;

创建

self.imageView=[[UIImageView alloc] initWithFrame:CGRectMake(100, 200, 200, 200)];self.imageView.layer.cornerRadius=100;self.imageView.layer.masksToBounds=YES;[self.view addSubview:self.imageView];self.imageView.image=[UIImage imageNamed:@"c2.jpg"];//用户交互打开self.imageView.userInteractionEnabled=YES;

1. 音乐播放器转啊转

//layer动画(音乐播放器转啊转)//控件可以拆分成两部分,一部分是控件的样式,比如边框,文字等,这些都是通过操作控件layer层来完成的,另一部分是控件的功能,比如button点击方法,这些都是自己的功能//layer动画主要是给控件layer层添加动画来实现效果//参数需要指定修改的是哪个属性CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.rotation"];//设置动画起始的值animation.fromValue=[NSNumber numberWithFloat:0];//设置最终旋转的角度animation.toValue=[NSNumber numberWithFloat:M_PI*2];//缩放  (把上面三行注掉换成缩放,动画就由转转变成缩放)
//    CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.scale"];
//    //起始缩放比例
//    animation.fromValue=[NSNumber numberWithInt:1];
//    animation.toValue=[NSNumber numberWithInt:2];//设置动画的播放时长animation.duration=10;//设置动画执行次数,NSIntegerMax整数最大值animation.repeatCount=NSIntegerMax;//旋转之后是否回到原来位置animation.autoreverses=NO;//是否按照结束位置继续旋转animation.cumulative=YES;//把动画加到imageview的layer上[self.imageView.layer addAnimation:animation forKey:@"rotate"];//给imageview上添加一个轻点的手势UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];[self.imageView addGestureRecognizer:tap];self.isRotation=NO;

旋转的实现方法(暂停和播放)

-(void)tapAction:(UITapGestureRecognizer *)tap{if (self.isRotation==NO) {//每一个view的layer层系统都有一个记录时间的属性,通过改变view的动画时间来控制动画效果//获取播放旋转的时间点CFTimeInterval stop=[self.imageView.layer convertTime:CACurrentMediaTime() fromLayer:nil];//为了暂停,把播放速度设置为0self.imageView.layer.speed=0;//记录当前时间的偏移量self.imageView.layer.timeOffset=stop;}else{//先找到上一次停止的时间偏移量CFTimeInterval time=self.imageView.layer.timeOffset;//让动画旋转的速度恢复self.imageView.layer.speed=1;//把偏移量清零self.imageView.layer.timeOffset=0;self.imageView.layer.beginTime=0;//接下来以停止时间作为开始,继续旋转self.imageView.layer.beginTime=[self.imageView.layer convertTime:CACurrentMediaTime() fromLayer:nil]-time;}//状态取反self.isRotation=!self.isRotation;
}

2. 系统的多种动画效果

self.secImageView=[[UIImageView alloc] initWithFrame:CGRectMake(70, 450, 200, 200)];[self.view addSubview:self.secImageView];self.secImageView.image=[UIImage imageNamed:@"c2.jpg"];self.button=[UIButton buttonWithType:UIButtonTypeSystem];self.button.frame=CGRectMake(300, 450, 50, 50);self.button.backgroundColor=[UIColor cyanColor];[self.view addSubview:self.button];[self.button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

点击方法

-(void)click:(UIButton *)button{CATransition *transition=[CATransition animation];//设置动画类型transition.type=@"pageCurl";/** type**  各种动画效果  其中除了'fade', `moveIn', `push' , `reveal' ,其他属于私有的API.*  ↑↑↑上面四个可以分别使用'kCATransitionFade', 'kCATransitionMoveIn', 'kCATransitionPush', 'kCATransitionReveal'来调用.*  @"cube"                     立方体翻滚效果*  @"moveIn"                   新视图移到旧视图上面*  @"reveal"                   显露效果(将旧视图移开,显示下面的新视图)*  @"fade"                     交叉淡化过渡(不支持过渡方向)             (默认为此效果)*  @"pageCurl"                 向上翻一页*  @"pageUnCurl"               向下翻一页*  @"suckEffect"               收缩效果,类似系统最小化窗口时的神奇效果(不支持过渡方向)*  @"rippleEffect"             滴水效果,(不支持过渡方向)*  @"oglFlip"                  上下左右翻转效果*  @"rotate"                   旋转效果*  @"push"*  @"cameraIrisHollowOpen"     相机镜头打开效果(不支持过渡方向)*  @"cameraIrisHollowClose"    相机镜头关上效果(不支持过渡方向)*///设置动画时长transition.duration=3;//设置动画播放次数transition.repeatCount=NSIntegerMax;[self.secImageView.layer addAnimation:transition forKey:@"transition"];}

3. 长按抖动

//长按抖动self.myView=[[UIView alloc] initWithFrame:CGRectMake(110, 140, 160, 50)];self.myView.backgroundColor=[UIColor redColor];[self.view addSubview:self.myView];UILongPressGestureRecognizer *longPress=[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];[self.myView addGestureRecognizer:longPress];

点击方法

-(void)longPress:(UILongPressGestureRecognizer *)longPress{//关键帧动画CAKeyframeAnimation *keyAnimation=[CAKeyframeAnimation animationWithKeyPath:@"transform.rotation"];float top=M_PI/20;float bom=M_PI/20;keyAnimation.values=@[@(top),@(0),@(bom),@(0),@(top)];//设置动画时长keyAnimation.duration=0.1;//次数keyAnimation.repeatCount=NSIntegerMax;[self.myView.layer addAnimation:keyAnimation forKey:@"key"];//停止动画//dispatch_after的作用就是会延迟执行内容dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{//在block里写停止动画的方法[self.myView.layer removeAnimationForKey:@"key"];});}

4. 点赞效果

self.goodButton=[UIButton buttonWithType:UIButtonTypeCustom];self.goodButton.frame=CGRectMake(300, 70, 50, 50);[self.view addSubview:self.goodButton];[self.goodButton addTarget:self action:@selector(changeImage:) forControlEvents: UIControlEventTouchUpInside];[self.goodButton setBackgroundImage:[UIImage imageNamed:@"IconGood.png"] forState:UIControlStateNormal ];//把button自带的点击效果取消,button的类型要设置成customself.goodButton.adjustsImageWhenHighlighted=NO;self.isSelect=NO;

点击实现

-(void)changeImage:(UIButton *)button{//关键帧动画//用动画完成放大的效果CAKeyframeAnimation *animation=[CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];//需要给他设置一个关键帧的值,这个值就是变化过程//values是一个数组animation.values=@[@(0.5),@(1.0),@(1.5)];//设置动画的时长animation.duration=0.2;//加到button上[self.goodButton.layer addAnimation:animation forKey:@"animation"];//根据状态更换图片if (self.isSelect == NO) {[self.goodButton setBackgroundImage:[UIImage imageNamed:@"IconHgood.png"] forState:UIControlStateNormal];}else{[self.goodButton setBackgroundImage:[UIImage imageNamed:@"IconGood.png"] forState:UIControlStateNormal];}self.isSelect=!self.isSelect;}

基本动画效果(点赞,长按抖动,播放器转盘,水滴效果)相关推荐

  1. Android 自定义控件 仿MX 播放器的SeekBar效果

    一.分析 最近下载了个MX 播放器来看视频,发现他的SeekBar做的挺有趣的,先看看MX 播放器的SeekBar效果: 外面多了个框框,没有了进度的那个小圆点,还可以以水平方向的摆放和竖直方向的摆放 ...

  2. HTML5播放器调用(功能效果)

     播放器调用 <div id="player"></div> <script src="//player.polyv.net/script/ ...

  3. 卡拉OK效果的实现-iOS音乐播放器

    自己编写的音乐播放器偶然用到这个模块,发现没有思路,而且上网搜了搜,关于这方面的文章不是很多,没找到满意的结果,然后自己也是想了想,最终实现了这种效果,想通了发现其实很简单. 直接上原理: 第一种: ...

  4. 播放器实现声音效果淡入淡出

    目录 1.前言 2.基本代码 3.延伸思考问题 4.开始播放-淡入 5.停止播放-淡出 6.完整基本代码修改 1.前言 由于切歌会有爆破音的问题.方案有很多,比如音频合成淡入淡出fadein,fade ...

  5. iOS实现基于VLC播放器的封装效果

    前言: 在一些特定场景下,我们获取到的音视频,由于格式比较特殊,用avplayer等播放器是无法播放的,此时,我们可以借助强大的VLC播放器来处理. 原理这里不再赘述,下面我们讲一下如何添加VLC播放 ...

  6. 使用windowManager实现音乐播放器(悬浮框)效果

    在使用要获取CompatModeWrapper,首先得在应用程序的AndroidManifest.xml文件中添加权限 <uses-permission android:name="a ...

  7. C# 粘连窗体效果(窗体连动 类似千千静听播放器的)

    两个窗体分别是FormMain FormList 第1个窗体:FormMain : public partial class FormMain : Form { FormList formlist=n ...

  8. Qt图片定时滚动播放器+透明过渡动画

    目录 参考 结构 PicturePlay.pro main.cpp myqlabel.h 自定义QLabel myqlabel.cpp自定义QLabel pictureplay.h picturepl ...

  9. 微信小程序——【云音乐播放器】

    目录 第一章 开发准备 一.项目结构 二.新建微信小程序项目 第二章 标签页切换 一.常用组件介绍 二.编写页面结构和样式 第三章 音乐推荐 一.组件介绍 二.编写音乐推荐页面结构和样式 第四章 播放 ...

最新文章

  1. html点击区域,求助HTML+CSS可以点击区域外关闭实现。
  2. GraphPad Prism多数据处理实用技巧
  3. anaconda如何保存python文件_想在Jupyter Notebook(Anaconda)中保存并运行Python脚本
  4. 导入数据库怎么导入_导入必要的库
  5. P4555 最长双回文串
  6. TCP/IP 四层模型
  7. 【Elasticsearch】Named Entity Annotations in Elasticsearch es 实体 注解
  8. Linux与shell编程之一: Linux基础知识总结
  9. 零基础带你学习计算机网络—(四)
  10. php中时间戳和正常日期的相互转化
  11. 基于USB armory 制作一个USB恶意软件分析器
  12. 做一个iframe的弹出框
  13. 11-新闻发布系统数据库-新闻数据操作
  14. 使用selenium调用qq游览器(基于Chrome浏览器)
  15. 关于PPT配色的小技巧
  16. Android studio中使用百度地图
  17. C语言统考试卷一及答案,2017年《计算机应用基础》统考试题及答案
  18. 香农三大定理、香农公式
  19. 智慧停车(三) IOT选型-电信物联网
  20. 真子集的三种表示方法的区别(⊂与⫋ 与⊊)

热门文章

  1. Python编写一个简单的百度搜索应用
  2. ARMV8/ARMV9/TEE安全等视频课程上线了
  3. [Kubernetes] Taint和Toleration(污点和容忍)
  4. 超13亿元B轮融资完成 商用车“渐进式”智能驾驶践行者所托瑞安再获资本助力
  5. 最小二乘法求回归方程的推导
  6. java io流拒绝访问_JAVA IO流 - 张宏良的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. 中山大学成立信息学部,由计算机学院、人工智能学院、软件工程学院、网络空间安全学院等8个学院组成...
  8. 神器来了,终于能轻松打造机器学习App!
  9. java入门-2-【入门】已知一个圆的半径,求解该圆的面积和周长 【运算符】
  10. hmailserver mysql密码_使用HMAILSERVER搭建邮件服务器图文教程