动画相关的总结
视图动画
UIView动画
首尾式动画
执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在 [UIView beginAnimations:nil context:nil]
和 [UIView commitAnimations]
之间。
常见方法:
1 | // 动画开始时调用 |
block 动画
1 | // 普通的动画 |
示例
1 | //首尾式动画 |
注意点:
UIView 的动画在开始的时候,它的 frame 就已经到了目的位置,运动的只是 UIView 的 layer。因此,在 UIView 执行动画的时候,运动中的视图是无法相应点击事件的。因此,如果要视图能够相应点击事件,就需要在寻找点击响应者的时候,判断点击的点是否在 UIView 的 layer 的 frame 里。代码如下:
1 | // 设置动画 |
UIView 关键帧动画
关键帧动画使用 block 执行。包含了几个必要属性:
1 | [UIView animateKeyframesWithDuration:1 delay:0.5 options:UIViewKeyframeAnimationOptionCalculationModeLinear animations:^{ |
既然是关键帧动画,那么肯定是能增加帧的。在原本执行动画的方法中通过增加帧:
1 | [UIView animateKeyframesWithDuration:1 delay:0.5 options:UIViewKeyframeAnimationOptionCalculationModeLinear animations:^{ |
CALayer 关键帧动画
CALayer 的动画其实可以用 UIView 的动画来代替。不过 CALayer 的关键帧动画可以让视图沿着指定路径移动
参数形式
1 | //根据values移动的动画 |
路径形式
1 | -(void)pathAnimation2 { |
转场动画
转场动画就是就是把下一个显示的时刻的界面截了个图,然后做转场。
示例:
1 | // 先设置下一个场景 |