从今天开始,hutuni的博客会不断的更新IOS动画相关的教程,希望大家支持指正错误!废话少说直接上代码和效果。

1、先把整个代码放出来,然后再详细的讲解一下吧。

#import "RBStudyViewController.h"@interface RBStudyViewController () {UIImageView*testIV;
}
@end@implementation RBStudyViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.//self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"演示" style:UIBarButtonItemStylePlain target:self action:@selector(testAction3)];//testIV = [[UIImageView alloc]initWithFrame:CGRectMake((self.view.frame.size.width-100.0)/2.0, 100.0, 100.0, 100.0)];testIV.image = [UIImage imageNamed:@"demo_2.png"];[self.view addSubview:testIV];
}#pragma mark - UIBarButtonItem Delegate
// 动画效果:移动;图片中心点移动300像素,再还原原来的位置
- (void)testAction {CGPoint toCenter = testIV.center;toCenter.x -= 300;testIV.center = toCenter;toCenter.x += 300;[UIView animateWithDuration: 0.5 animations: ^{testIV.center = toCenter;} completion:^(BOOL finished) {}];
}
// 动画效果:移动反弹;图片中心点移动300像素,再还原原来的位置,加上反弹
- (void)testAction1 {CGPoint toCenter = testIV.center;toCenter.x -= 300;testIV.center = toCenter;toCenter.x += 300;[UIView animateWithDuration:1 delay:0 usingSpringWithDamping:0.2f initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{testIV.center = toCenter;} completion:^(BOOL finished) {}];
}
// 动画效果:旋转:图片旋转90度,再还原原来的位置
- (void)testAction2 {CGAffineTransform fromTransform = testIV.transform;CGAffineTransform toTransform = CGAffineTransformRotate(testIV.transform,M_PI/2.0);testIV.transform = toTransform;[UIView animateWithDuration: 0.5 animations: ^{testIV.transform = fromTransform;} completion:^(BOOL finished) {}];
}
// 动画效果:缩放:图片放大1.5倍,再还原原来的位置
- (void)testAction3 {CGAffineTransform fromTransform = testIV.transform;CGAffineTransform toTransform = CGAffineTransformScale(testIV.transform, 1.5, 1.5);testIV.transform = toTransform;[UIView animateWithDuration: 0.5 animations: ^{testIV.transform = fromTransform;} completion:^(BOOL finished) {}];
}@end

2、常用的动画就是frame的改变,alpha的改变,旋转,放大缩小。后面会降到页面过渡效果。

3、反弹动画Spring Animation详解

为了更加直观,我做了一个演示项目,从左至右分别列出了 Spring Animation, Ease-Out Animation 和 Linear Animation 的动画效果:

可以看到,和系统自带的 ease-out 效果相比,Spring Animation 前期速度增加得更快,在动画时间一定的前提下,给人感觉更加快速、干净。

+ (void)animateWithDuration:(NSTimeInterval)durationdelay:(NSTimeInterval)delayusingSpringWithDamping:(CGFloat)dampingRatioinitialSpringVelocity:(CGFloat)velocityoptions:(UIViewAnimationOptions)optionsanimations:(void (^)(void))animationscompletion:(void (^)(BOOL finished))completion

usingSpringWithDamping 的范围为 0.0f 到 1.0f ,数值越小「弹簧」的振动效果越明显。
initialSpringVelocity 则表示初始的速度,数值越大一开始移动越快。
使用

Spring Animation 是线性动画或 ease-out 动画的理想替代品。由于 iOS 本身大量使用的就是 Spring Animation,用户已经习惯了这种动画效果,因此使用它能使 App 让人感觉更加自然,用 Apple 的话说就是「instantly familiar」。此外,Spring Animation 不只能对位置使用,它适用于所有可被添加动画效果的属性。

4、UIViewAnimationOptions

1.常规动画属性设置
UIViewAnimationOptionLayoutSubviews:动画过程中保证子视图跟随运动。
UIViewAnimationOptionAllowUserInteraction:动画过程中允许用户交互。
UIViewAnimationOptionBeginFromCurrentState:所有视图从当前状态开始运行。
UIViewAnimationOptionRepeat:重复运行动画。
UIViewAnimationOptionAutoreverse :动画运行到结束点后仍然以动画方式回到初始点。
UIViewAnimationOptionOverrideInheritedDuration:忽略嵌套动画时间设置。
UIViewAnimationOptionOverrideInheritedCurve:忽略嵌套动画速度设置。
UIViewAnimationOptionAllowAnimatedContent:动画过程中重绘视图(注意仅仅适用于转场动画)。
UIViewAnimationOptionShowHideTransitionViews:视图切换时直接隐藏旧视图、显示新视图,而不是将旧视图从父视图移除(仅仅适用于转场动画)
UIViewAnimationOptionOverrideInheritedOptions :不继承父动画设置或动画类型。
2.动画速度控制(可从其中选择一个设置)
UIViewAnimationOptionCurveEaseInOut:动画先缓慢,然后逐渐加速。
UIViewAnimationOptionCurveEaseIn :动画逐渐变慢。
UIViewAnimationOptionCurveEaseOut:动画逐渐加速。
UIViewAnimationOptionCurveLinear :动画匀速执行,默认值。
3.转场类型(仅适用于转场动画设置,可以从中选择一个进行设置,基本动画、关键帧动画不需要设置)
UIViewAnimationOptionTransitionNone:没有转场动画效果。
UIViewAnimationOptionTransitionFlipFromLeft :从左侧翻转效果。
UIViewAnimationOptionTransitionFlipFromRight:从右侧翻转效果。
UIViewAnimationOptionTransitionCurlUp:向后翻页的动画过渡效果。
UIViewAnimationOptionTransitionCurlDown :向前翻页的动画过渡效果。
UIViewAnimationOptionTransitionCrossDissolve:旧视图溶解消失显示下一个新视图的效果。
UIViewAnimationOptionTransitionFlipFromTop :从上方翻转效果。
UIViewAnimationOptionTransitionFlipFromBottom:从底部翻转效果。

IOS动画教程(一)相关推荐

  1. iOS 最全动画教程(基础)

    IOS 最全动画教程(基础) 大家好,做了这么久的iOS开发,没有系统性的总结过iOS某方面的知识点,总觉得有些地方还是不太了解,查阅各种资料,加上平时开发的经验,因此准备写关于动画系列的总结.作为开 ...

  2. iOS开发教程:Storyboard全解析-第二部分

    如果你想了解更多Storyboard的特性,那么你就来对了地方,下面我们就来接着上次的内容详细讲解Storyboard的使用方法. 在上一篇<iOS开发教程:Storyboard全解析-第一部分 ...

  3. ios绘图教程(原文http://www.cocoachina.com/industry/20140115/7703.html)

    os开发者平台 Cocos引擎中文官网 H5小游戏编辑器 退出chengtanze 首页 资讯 问答 论坛 Cocos2d-x 开发者中心 新手入门 专题 新闻日历 开发者通道 排行榜 代码库 图书库 ...

  4. AE制作Json动画教程

    本文将从为什么要做动画,到动画实现方式,再到用AE+Bodymovin制作动画,结合实际案例行分享,希望给新手带来一些启发. 首先我们来聊聊,我们为什么要做动效? 1.突出产品某项功能 在APP中,我 ...

  5. Unity创建使用操纵杆飞行动画教程

    Unity 3d移动超级英雄使用操纵杆飞行 MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:20节课 ...

  6. iOS动画系列之八:使用CAShapeLayer绘画动态流量图

    这篇文章通过使用CAShapeLayer和UIBezierPath来画出一个动态显示剩余流量的小动画. 最终实现的效果如下: Paste_Image.png 动态效果图: shapeLayerAni. ...

  7. iOS动画系列之九:实现点赞的动画及播放起伏指示器

    iOS动画系列,共十篇.现在写到第九篇啦.感兴趣的可以通过下面的传输门进到其他几篇文章里面. 第一篇:iOS动画系列之一:通过实战学习CALayer和透视的原理.做一个带时分秒指针的时钟动画(上) 第 ...

  8. iOS动画详解(学习动画看这一篇就够了)

    2019独角兽企业重金招聘Python工程师标准>>> 原文出处:wu大维 动效设计一直是iOS平台的优势,良好的动效设计可以很好地提升用户体验.而动画则是动效的基础支撑.本动画将从 ...

  9. iOS动画开发之五——炫酷的粒子效果

    iOS动画开发之五--炫酷的粒子效果 在上几篇博客中,我们对UIView层的动画以及iOS的核心动画做了介绍,基本已经可以满足iOS应用项目中所有的动画需求,如果你觉得那些都还不够炫酷,亦或是你灵光一 ...

最新文章

  1. 复制虚拟机网卡eth0变eth1
  2. taro 小程序转h5之后报错_记录微信小程序转Taro中遇到的问题
  3. 如何修改被编译后DLL文件
  4. 自己开发的ABAP代码版本查看工具
  5. java 几个实用的小工具
  6. CSS之REM和EM的区别
  7. SAP License:CO07利润中心必输
  8. 终结者:HTTPS在Tomcat中的使用(三)——Java代码生成密钥库文件及其对应的安全证书
  9. Facebook算法swift实现
  10. autoucad2014激活就未响应_CAD2014激活错误怎么办,autocad2014激活错误的解决办法
  11. 对象关系Lookup与Master-Detail
  12. html网页加线条,「网站特效」html5 canvas粒子线条特效制作方法
  13. 制作ubuntu自定义系统镜像
  14. imx6ull 以太网
  15. AD学习记录03-规则
  16. SQL存储过程根据,循环取出数据
  17. HNOI2005 狡猾的商人
  18. 关于jxl的一点知识
  19. C语言字符串指针(指向字符串的指针)详解
  20. 网络模拟器——Cisco、eNSP、EVE、GEN3下载

热门文章

  1. InvalidateRect函数简析
  2. 测试小兵成长记:路在脚下
  3. Segmentation-baseddeep-learningapproachforsurface-defect detection
  4. find ctime atime mtime
  5. Android Shape 形状
  6. Effective STL之容器
  7. python爬虫实例教程-python动态爬虫的实例分享
  8. TimeSpan的用法
  9. 交流异步电动机调速原理1
  10. Atcoder C - Cash Register