IOS 最全动画教程(基础)
大家好,做了这么久的iOS开发,没有系统性的总结过iOS某方面的知识点,总觉得有些地方还是不太了解,查阅各种资料,加上平时开发的经验,因此准备写关于动画系列的总结。作为开发者,我希望大家能尽可能的提高自己在APP动画方面的一些体验,多玩玩一些比较好的APP,在了解iOS动画的知识后,可以试着仿写一些动画设计。本教程的前半部分,我会大概介绍下IOS动画的整体框架,分为哪几个部分,好让开发者可以了解动画的大概,从一个过来人讲,动画在很多人的眼里,可能最明白的就是,将视图A从A点移动到B点,改变视图A的Frame。很多概念都很模糊,相信大家看了我的这个教程后,会走出动画方面的迷茫。后半部分的话,会以一些动画实例来演示如何利用我们的简单的动画组合起来实现一些复杂的动画效果。
UIView动画
1、UIView 类方法动画
[UIView beginAnimations:<#(nullable NSString *)#> context:<#(nullable void *)#>]
这行代码在UIView
的UIViewAnimation
分类里面,IOS2.0以上就已经支持了。鉴于目前UIView
的动画实现基本都用Block方式实现,这里就不多叙述分类方法了。以免让大家更加混淆,增加学习动画的成本。
2、UIView Block动画
大家可以翻到UIView.h
头文件里面去看一下,其中有个UIViewAnimationWithBlocks
的分类,就是对UIView
Block动画的扩展。
2.1 UIView
属性动画的Block,提供了动画执行时间 duration
,动画延时执行时间delay
,动画执行Block代码块,已经动画完成回调block块completion
。可以执行动画的属性有以下几种,
- 大小变化(frame)
- 拉伸变化(bounds)
- 中心位置(center)
- 旋转(transform)
- 透明度(alpha)
- 背景颜色(backgroundColor)
- 拉伸内容(contentStretch)
对Block不熟悉的朋友可以去看下IOS Block相关知识。
+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion
2.2 UIView
弹簧动画的Block,iOS7.0后新增Spring动画(iOS系统动画大部分采用Spring Animation,适用于所有可被添加动画效果的属性)
[UIView animateWithDuration:(