zoukankan      html  css  js  c++  java
  • layer 的常用属性

      

    layer的各种属性代码示例:

     1 - (void)viewDidLoad {
     2     [super viewDidLoad];
     3     // Do any additional setup after loading the view.
     4     
     5     // 设置图片为圆角 (self.qweImageView.frame.size.width / 2 变成圆形)
     6     self.imageView.layer.cornerRadius = self.imageView.frame.size.width / 2;
     7 //    self.imageView.layer.masksToBounds = YES;
     8     // 注意:光设置上边一句代码是实现不了效果的(下边的maskToBounds这个属性影响layer层的阴影效果)
     9     // 设置layer的阴影颜色
    10     self.imageView.layer.shadowColor = [UIColor blueColor].CGColor;
    11     // 设置layer的透明度
    12     self.imageView.layer.shadowOpacity = 0.5f;
    13     // 设置阴影偏移量
    14     self.imageView.layer.shadowOffset = CGSizeMake(-30, 20);
    15     // 设置阴影的模糊度
    16     self.imageView.layer.shadowRadius = 1;
    17     
    18     // 创建View
    19     UIView *myView = [[UIView alloc] init];
    20     myView.backgroundColor = [UIColor redColor];
    21     // 设置frame
    22     myView.frame = CGRectMake(100, 500, 100, 100);
    23     // 设置视图圆角 (self.qweImageView.frame.size.width / 2 如果是方形视图变成圆形)
    24     myView.layer.cornerRadius = myView.frame.size.width / 2;
    25     // 设置阴影颜色
    26     myView.layer.shadowColor = [UIColor lightGrayColor].CGColor;
    27     // 设置阴影偏移量
    28     myView.layer.shadowOffset = CGSizeMake(10, 10);
    29     // 设置阴影的透明度
    30     myView.layer.shadowOpacity = 0.8f;
    31     // 设置阴影的模糊度
    32     myView.layer.shadowRadius = 1;
    33     // 添加到View上
    34     [self.view addSubview:myView];
    35     
    36     [self customLayer];
    37 }
    38 
    39 - (void)customLayer {
    40     // 创建一个layer对象
    41     CALayer *layer = [CALayer layer];
    42     // 设置对象的位置和大小
    43     layer.frame = CGRectMake(300, 280, 100, 100);
    44     // 设置背景颜色
    45     layer.backgroundColor = [UIColor redColor].CGColor;
    46     // 设置锚点
    47 //    layer.anchorPoint = CGPointMake(0, 0);
    48     // 设置大小
    49     layer.position = CGPointMake(100, 100);
    50     // layer需要添加到layer层
    51     [self.view.layer addSublayer:layer];
    52 }
     1 #pragma mark - CABasicAnimation
     2 - (IBAction)CABasicAnimation:(id)sender {
     3     
     4     // 第一步:创建动画对象
     5     CABasicAnimation *basicAnimation = [CABasicAnimation animation];
     6     // 第二步:告诉layer层需要执行什么样的动画(后边设置的内容为CALayer的相关属性)
     7     basicAnimation.keyPath = @"position";  // position 改变位置的
     8     // 第三步:告诉layer从哪里来,到哪里去
     9     basicAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
    10     basicAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 600)];
    11     // 注意点: 如果要实现图片不会到原来点,需要以下两句代码
    12     basicAnimation.removedOnCompletion = NO;
    13     // 设置保存动画状态的内容
    14     basicAnimation.fillMode = kCAFillModeForwards;
    15     
    16     // 第四步:设置动画持续的时长
    17     basicAnimation.duration = 6.0f;
    18     // 第五步:将要执行的动画添加到calayer上
    19     [self.imageView.layer addAnimation:basicAnimation forKey:@"basic"];
    20     // *************翻转效果
    21     CABasicAnimation *basic = [CABasicAnimation animation];
    22     basic.keyPath = @"transform";
    23     // 设置翻转的地方
    24     basic.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_2, 0, 0, 1)];
    25     basic.duration = 0.2f;
    26     [self.imageView.layer addAnimation:basic forKey:@"aaaa"];
    27     // 根据key去移除动画
    28     //    [self.imageView.layer removeAnimationForKey:@"basic"];
    29 }
    30 
    31 #pragma mark - CAKeyframeAnimation
    32 - (IBAction)CAKeyAnimation:(id)sender {
    33     // 第一步:创建对象
    34     CAKeyframeAnimation *keyAnimation = [CAKeyframeAnimation animation];
    35     // 第二步:设置动画轨迹
    36     keyAnimation.keyPath = @"transform.rotation";
    37     // 第三步:设置翻转的角度 (弧度计算公式:度数/180*M_PI)
    38     keyAnimation.values = @[@(-300 / 180.0 * M_PI), @(300 / 180.0 * M_PI), @(-180 / 180.0 * M_PI)];
    39     // 第四步:设置时长
    40     keyAnimation.duration = 15.0f;
    41     // 第五步:添加动画到layer层
    42     [self.view.layer addAnimation:keyAnimation forKey:@"bbbb"];
    43 }
    44 
    45 #pragma mark - CAAnimationGroup
    46 - (IBAction)CAAnimationGroup:(id)sender {
    47     // 平移动画
    48     CABasicAnimation *basic1 = [CABasicAnimation animation];
    49     basic1.keyPath = @"transform.translation.y";    // 按照y轴平移
    50     basic1.toValue = @(400);
    51     // 缩小动画
    52     CABasicAnimation *basic2 = [CABasicAnimation animation];
    53     basic2.keyPath = @"transform.scale";  // 缩小
    54     basic2.toValue = @(0.3);
    55     // 旋转动画
    56     CABasicAnimation *basic3 = [CABasicAnimation animation];
    57     basic3.keyPath = @"transform.rotation";   // 旋转
    58     basic3.toValue = @(M_PI);
    59     
    60     // 需要创建管理各个动画的动画组
    61     CAAnimationGroup *group = [CAAnimationGroup animation];
    62     group.animations = @[basic1,basic2,basic3];
    63     // group 会自动分配时间
    64     group.duration = 5.0f;
    65     
    66     [self.imageView.layer addAnimation:group forKey:@"ccccc"];
    67 }
    68 
    69 #pragma mark - CASpring
    70 - (IBAction)CASpring:(id)sender {
    71     // 设置对象
    72     CASpringAnimation *spring = [CASpringAnimation animation];
    73     spring.keyPath = @"transform.scale";
    74     spring.fromValue = @1;
    75     spring.toValue = @0.2;
    76     spring.duration = 3.0f;
    77     
    78     [self.imageView.layer addAnimation:spring forKey:@"ddddd"];
    79 }
  • 相关阅读:
    小达同学软件测试第四讲-执行测试
    小达同学软件测试第四讲-执行测试
    Android Studio一直显示Building“project name”Gradle project info问题详解
    Android Studio一直显示Building“project name”Gradle project info问题详解
    安卓入门基础(九)-对应用结构进行分析
    安卓入门基础(九)-对应用结构进行分析
    深入浅出的排序算法-冒泡排序
    深入浅出的排序算法-冒泡排序
    【程序人生】献给还不知道怎么坚持的你
    【程序人生】献给还不知道怎么坚持的你
  • 原文地址:https://www.cnblogs.com/crazygeek/p/5532834.html
Copyright © 2011-2022 走看看