UIView
可以设置动画的属性:
frame
视图的尺寸和位置
bounds
视图的尺寸
center
视图的位置
transform
翻转或者缩放视图
alpha
视图的透明度
backgroundColor
视图的背景颜色
contentStretch
视图内容如何拉伸
- 开始动画
参数animationID
,动画内部应用程序标识用来传递给动画代理消息。
参数context
,附加的应用程序信息用来传递给动画代理消息。
调用setAnimationWillStartSelector:
来使用。
写个方法包含这两参数,在方法里就可以使用设置的两参数了。
- (void)animationWillStart:(NSString *)animationID context:(void *)context
调用setAnimationDidStopSelector:
来使用,三个参数。
- (void)animationFinished:(NSString *)animationID finished:(BOOL)finished context:(void *)context
+ (void)beginAnimations:(NSString *)animationID context:(void *)context; - 结束动画
+ (void)commitAnimations;
所有动画设置方法,都是beginAnimations
开始commitAnimations
结束的动画,在动画外面和代码块设置的动画无效。 - 设置动画消息代理
+ (void)setAnimationDelegate:(id)delegate; - 设置接收代理消息的对象。动画将要开始时调用
+ (void)setAnimationWillStartSelector:(SEL)selector; - 设置接收代理消息的对象。动画已经停止时调用
+ (void)setAnimationDidStopSelector:(SEL)selector; - 设置动画持续时间。默认
0.2
秒
+ (void)setAnimationDuration:(NSTimeInterval)duration; - 设置动画延迟时间。默认
0.0
秒
+ (void)setAnimationDelay:(NSTimeInterval)delay; - 设置动画开始时间。默认是
now
+ (void)setAnimationStartDate:(NSDate *)startDate; - 设置动画变化曲线。默认是淡入淡出
+ (void)setAnimationCurve:(UIViewAnimationCurve)curve;
变化曲线的效果:
typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
UIViewAnimationCurveEaseInOut, //淡入淡出
UIViewAnimationCurveEaseIn, //开始慢
UIViewAnimationCurveEaseOut, //结束慢
UIViewAnimationCurveLinear //线性的
}; - 设置动画重复次数。默认是
0.0
,可以是小数
+ (void)setAnimationRepeatCount:(float)repeatCount; - 设置动画是否自动重复播放
参数repeatAutoreverses
,如果动画自动重复就是YES
否则NO
。默认是NO
使用setAnimationRepeatCount:
方法来指定动画重复次数。如果重复次数为0将没有任何效果。
+ (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses; - 设置动画从当前状态开始播放。
参数fromCurrentState
,如果动画需要从他们当前状态开始播放是YES
。否则为NO
。默认是NO
如果设置为YES
那么当动画在运行过程中,当前视图的位置将会作为新的动画的开始状态。如果设置为NO
,当前动画结束前新动画将使用视图最后状态的位置作为开始状态。
+ (void)setAnimationBeginsFromCurrentState:(BOOL)fromCurrentState; - 设置动画类型
参数transition
,把一个过渡效果应用到视图中。
参数view
,需要过渡的视图对象。
参数cache
,如果是YES
,那么在开始和结束图片视图渲染一次并在动画中创建帧,否则视图将会在每一帧都渲染。例如缓存,你不需要在视图转变中不停的更新,你只需要等到转换完成再去更新视图。
+ (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache;
动画效果:
typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
UIViewAnimationTransitionNone, 没有动画效果
UIViewAnimationTransitionFlipFromLeft, 从左向右旋转翻页
UIViewAnimationTransitionFlipFromRight, 从右向左旋转翻页
UIViewAnimationTransitionCurlUp, 卷曲翻页,从下往上
UIViewAnimationTransitionCurlDown, 卷曲翻页,从上往下
}; - 设置是否激活动画
参数enabled
,如果是YES
那就激活动画,否则NO
。默认是YES
+ (void)setAnimationsEnabled:(BOOL)enabled; - 返回一个布尔值表示动画是否结束。如果动画结束返回
YES
,否则NO
。
+ (BOOL)areAnimationsEnabled; - 可以强制一些动作不使用动画
它是一个简单的封装,先检查动画当前是否启用,然后禁止动画,执行块语句,最后重新启用动画。一个需要说明的地方是,它并不会阻塞基于CoreAnimation
的动画。iOS7的新方法
+ (void)performWithoutAnimation:(void (^)(void))actionsWithoutAnimation NS_AVAILABLE_IOS(7_0);