zoukankan      html  css  js  c++  java
  • 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     }];
    https://liangdahong.com/
  • 相关阅读:
    CGI编程完全手册(转)
    Linux下读写芯片的I2C寄存器(转)
    Linux内核中_IO,_IOR,_IOW,_IOWR宏的用法与解析
    H264中的SPS、PPS提取与作用(转)
    H264码流打包分析(精华)--转
    嵌入式Linux USB WIFI驱动的移植(转)
    推荐一款技术人必备的接口测试神器:Apifox
    Java 设置、删除、获取Word文档背景(基于Spire.Cloud.SDK for Java)
    Java 添加、删除、格式化Word中的图片( 基于Spire.Cloud.SDK for Java )
    Java 添加、删除、替换、格式化Word中的文本(基于Spire.Cloud.SDK for Java)
  • 原文地址:https://www.cnblogs.com/dahongliang/p/5562413.html
Copyright © 2011-2022 走看看