UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持,执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图
下面列举一些常用方法
1. 头尾式
//第一个参数是动画的标识,(一般为Nil) //第二个参数附加的应用程序信息用来传递给动画代理消息 + (void)beginAnimations:(NSString *)animationID context:(void *)context; //结束动画,与beginAnimations连用 + (void)commitAnimations;
[UIView beginAnimations:(NSString *) context:(void *)]; //这里放需要实现动画的效果 //例如 位置变换、大小变化、改变透明度、改变状态、改变视图层次、形变(即任何应用到视图上的仿射变换)。其中形变包括:旋转、缩放、位移。用transform属性值,可以达到形变的目的。 [UIView commitAnimations];
2.Block块
官方建议使用block块创建动画
block块的优点:
1. 性能比较好
2. 代码结构性较好
//(NSTimeInterval)duration 该参数代表 动画执行的时间 //(void (^)(void))animations 该参数代表一个block代码块 ,要实现的动画的代码块写在这里 //(void (^)(BOOL finished))completion 该参数代表一个block代码块 ,要动画完成后,需要实现的代码写到这里 + (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion;
//意思就是. 步骤1的动画用了1秒时间执行,然后执行步骤2的整个代码块,而代码块则用了1秒执行步骤3的动画,完成然后再执行步骤4的动作 [UIView animateWithDuration:1.0 animations:^{ // 这里设置动画(步骤1) } completion:^(BOOL finished) { // 动画播放完毕后的行为动作(步骤2) [UIView animateWithDuration:1.0 animations:^{ //设置动画(步骤3) } completion:^(BOOL finished) { // 动画播放完毕后的行为动作(步骤4) }]; }];
另外几个方法:
//(NSTimeInterval)duration 该参数设置动画执行时间 //(NSTimeInterval)delay 该参数设置动画延时执行时间.(经过多小秒后才执行该动画) //(UIViewAnimationOptions)options 该参数设置动画的执行速度 //(void (^)(void))animations 该参数代表一个block代码块 ,要实现的动画的代码块写在这里 //(void (^)(BOOL finished))completion 该参数代表一个block代码块 ,要动画完成后,需要实现的代码写到这里 + (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
3.动画一些常用设置属性