iOS 动画初步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 动画初步相关的知识,希望对你有一定的参考价值。

ios 动画初步

1. CALayer的使用 (图层) 属于QuartzCore.framework 框架 跨平台

我们在开发中使用的UIKit.framework里面的控件之所以可以看见,主要是由于他拥有了CALayer。

 1   //-------------------------------------------------------------------------
 2     // 图层 部分属性
 3     
 4     // shadow 是否透明
 5     self.myView.layer.shadowOpacity = 1.0f;
 6     
 7     // shadow 颜色
 8     self.myView.layer.shadowColor = [UIColor redColor].CGColor;
 9     
10     // shadow 半径
11     self.myView.layer.shadowRadius = 10.0f;
12     
13     // layer 的圆角半径
14     self.myView.layer.cornerRadius = 5;
15     
16     // layer 边框颜色
17     _myView.layer.borderColor = [UIColor whiteColor].CGColor;
18     
19     // layer 边框半径
20     _myView.layer.borderWidth = 10;
21     //-------------------------------------------------------------------------

CALayer在设置部分属性时,有动画效果,(隐试动画)有  Animatable 相关的注释便自带了隐试动画

如:

1 /* The shadow offset. Defaults to (0, -3). Animatable. */
2 
3 @property CGSize shadowOffset;
4 
5 /* The blur radius used to create the shadow. Defaults to 3. Animatable. */
6 
7 @property CGFloat shadowRadius;

CALayer的使用

 1     CALayer *lay = [CALayer layer];
 2     lay.backgroundColor = [UIColor redColor].CGColor;
 3     lay.shadowOpacity = 1.0;
 4     lay.shadowColor = [UIColor whiteColor].CGColor;
 5     lay.shadowRadius = 10;
 6     lay.cornerRadius = 5;
 7     lay.masksToBounds = YES;
 8     [self.view.layer addSublayer:lay];
 9     
10     // 设置image
11     lay.contents = (__bridge id _Nullable)([UIImage imageNamed:@"111"].CGImage);

CALayerd的动画 (使用CATransform3D,一般不用此方法做动画)

 1     // 旋转 rotation
 2     [UIView animateWithDuration:0.3 animations:^{
 3         _layer.transform = CATransform3DMakeRotation(M_PI_4, 0, 0, 0);
 4         
 5         // KVC
 6         [_layer setValue:[NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 0, 0, 0)] forKeyPath:@"transform"];
 7 
 8         // KVC transform.rotation
 9         [_layer setValue:@M_PI forKeyPath:@"transform.rotation"];
10 
11     }];
12     
13     // 放大 缩小 Scale
14     [UIView animateWithDuration:0.3 animations:^{
15         
16         _layer.transform = CATransform3DMakeScale(0, 0, 0);
17         
18         // KVC
19         [_layer setValue:[NSValue valueWithCATransform3D:CATransform3DMakeScale(0, 0, 0)] forKeyPath:@"transform"];
20     }];
21     
22     // 平移 Translation
23     [UIView animateWithDuration:0.3 animations:^{
24 
25         _layer.transform = CATransform3DMakeTranslation(0, 0, 0);
26 
27         // KVC
28         [_layer setValue:[NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 0, 0)] forKeyPath:@"transform"];
29         
30         [_layer setValue:[NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, 0, 0)] forKeyPath:@"transform.x"];
31 
32     }];
33     
34     // ... CATransform3DMakeAffineTransform
35     [UIView animateWithDuration:0.3 animations:^{
36         
37         _layer.transform = CATransform3DMakeAffineTransform(CGAffineTransformMake(0, 0, 0, 0, 0, 0));
38         
39         // KVC
40         [_layer setValue:[NSValue valueWithCATransform3D:CATransform3DMakeAffineTransform(CGAffineTransformMake(0, 0, 0, 0, 0, 0))] forKeyPath:@"transform"];
41     }];

 

以上是关于iOS 动画初步的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段7——CSS动画

VSCode自定义代码片段7——CSS动画

使用嵌套片段和动画对象

Android:将“ViewPager”动画从片段更改为片段

Android 动画嵌套片段

配置更改后片段丢失过渡动画