属性框架:QuartzCore
CA: CoreAnimation -> 核心动画,所有的核心动画都是添加给layer的!
与UIView的区别:
1、layer负责内容的展示,不接受任何用户交互!
2、UIView继承自UIResponder,可以接受用交互,执行事件处理操作!
创建CALayer
1 // 1.创建 2 CALayer *redL = [CALayer layer]; 3 4 // 2.设置大小 5 redL.bounds = CGRectMake(0, 0, 100, 100); 6 7 // 3.设置位置 -> 不是center! 是position, 我们给视图设置的center,最终是交给了layer的position的! 8 redL.position = CGPointMake(150, 180); 9 10 // 4.背景色 -> 需要转为CGColorRef类型的颜色! 11 redL.backgroundColor = [UIColor redColor].CGColor; 12 13 // 5.添加 14 [self.view.layer addSublayer:redL];
常见属性:1、边框;2、阴影;3、内容(要以设置背景图片);4、圆角(masksToBounds会切掉阴影)
1 // MARK: - 1.边框 -> 向里面走! 2 // _redLayer.borderColor = [UIColor yellowColor].CGColor; 3 // _redLayer.borderWidth = 10; 4 5 // MARK: - 2.阴影 -> shadow 6 // 阴影默认向上偏移3个点! offset 7 _redLayer.shadowOpacity = 1.0; 8 // 阴影的颜色 9 _redLayer.shadowColor = [UIColor blueColor].CGColor; 10 _redLayer.shadowOffset = CGSizeMake(100, 100); 11 _redLayer.shadowRadius = 50; 12 // _redLayer.shadowPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 100, 100)].CGPath; 13 14 // MARK: - 3.内容 15 // 还可以直接设置背景图片! 16 // __bridge id 桥接 -> 将cgimage转为QuartzCore框架下得id类型! 17 // 以后可能还有其他的桥接形式! 18 // _redLayer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"ice"].CGImage); 19 _redLayer.contents = (__bridge id)[UIImage imageNamed:@"ice"].CGImage; 20 21 // MARK: - 4.圆角 22 _redLayer.cornerRadius = 20; 23 _redLayer.masksToBounds = YES; // 会切掉阴影部分
1 // 利用控制器视图layer的contents属性,直接设置背景图片! 2 // self.view.layer.contents = (__bridge id)[UIImage imageNamed:@"bg"].CGImage;