标签:
UIView继承于UIResponder CALayer继承于nsobject 创建UIView创建一个layer,通过UIView的layer属性可依访问它的图层。UIView具有事件处理功能,可以与用户交互,layer负责显示和动画任务。
要显示一个UIView,会自动调用起drawRect方法绘画所有内容,然后字啊将图层拷贝到屏幕上,完成UICView的显示。
frame不能作动画 修改大小bounds 修改位子position
CALayer不能直接使用UIColer、UIImage,要使用CGImageRef、CGColorRef。为了保证跨平台可以移植性,前者属于UIKit框架,只能在iOS系统中使用;后者属于CoreGraphics框架,可以同时在xos和ios使用。CALayer属于QuartzCore框架,也可以跨平台。
1 #pragma mark - 基本图层 2 CALayer *layer = [CALayer layer]; 3 4 layer.frame = CGRectMake(80, 50, 200, 200); 5 6 layer.backgroundColor = [UIColor redColor].CGColor; 7 8 [self.view.layer addSublayer:layer]; 9 //圆角 10 layer.cornerRadius = 20; 11 //边框 12 layer.borderWidth = 5; 13 layer.borderColor = [UIColor blueColor].CGColor; 14 //图片 15 layer.contents =(id)[UIImage imageNamed:@"123.jpg"].CGImage; 16 17 layer.masksToBounds = YES; 18 19 #pragma mark - 文字图层 20 CATextLayer *textLayer = [CATextLayer layer]; 21 22 textLayer.frame = CGRectMake(50, 50, 200, 20); 23 24 textLayer.string = @"这是一个头像"; 25 26 //设置文本颜色、大小,必须设置 27 textLayer.foregroundColor = [UIColor redColor].CGColor; 28 textLayer.fontSize = 17; 29 30 31 [self.view.layer addSublayer:textLayer]; 32 #pragma mark - 渐变图层 33 34 //经常用于导航栏的颜色渐变 35 36 CAGradientLayer *graLayer = [CAGradientLayer layer]; 37 38 graLayer.frame = CGRectMake(20, 250, 100, 100); 39 40 graLayer.colors = @[(id)[UIColor redColor].CGColor,(id)[UIColor blueColor].CGColor]; 41 42 //设置渐变方向 43 graLayer.startPoint = CGPointMake(1, 0); 44 graLayer.endPoint = CGPointMake(0, 1); 45 46 [self.view.layer addSublayer:graLayer]; 47 48 #pragma mark - 遮罩图层 49 CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 50 //方法一 UIBezioerPath画一个封闭的路径 51 52 //画一个内切圆 53 UIBezierPath *bezierPath1 = [UIBezierPath bezierPathWithRect:CGRectMake(100, 100, 250, 250)]; 54 55 //带圆角的矩形 56 UIBezierPath *bezierPath2 = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(50, 50, 150, 100) byRoundingCorners:1 | 2 cornerRadii:CGSizeMake(20, 20)]; 57 58 //自定义路径 59 60 UIBezierPath *bezierPath3 = [UIBezierPath bezierPath]; 61 62 //设置起点 63 [bezierPath3 moveToPoint:CGPointMake(10, 20)]; 64 //添加直线关键点 65 [bezierPath3 addLineToPoint:CGPointMake(100, 50)]; 66 [bezierPath3 addLineToPoint:CGPointMake(150, 100)]; 67 [bezierPath3 addLineToPoint:CGPointMake(70, 200)]; 68 //添加弧线关键点 69 [bezierPath3 addCurveToPoint:CGPointMake(50, 300) controlPoint1:CGPointMake(100, 100) controlPoint2:CGPointMake(100, 150)]; 70 71 72 //连接首尾 73 [bezierPath3 closePath]; 74 75 76 //设置遮罩图层的路径 77 shapeLayer.path = bezierPath3.CGPath; 78 79 //填充颜色 80 shapeLayer.fillColor = [UIColor yellowColor].CGColor; 81 82 [self.view.layer addSublayer:shapeLayer]; 83 84 //在UITableView中使用cornerRadius、CAshapeLayer,容易使UITableView不流畅,可以使用两张图片拼出一个圆形头像
标签:
原文地址:http://www.cnblogs.com/niaoniao/p/5423063.html