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 }