码迷,mamicode.com
首页 > 其他好文 > 详细

CALayer与UIBezierPath

时间:2016-04-23 00:00:39      阅读:431      评论:0      收藏:0      [点我收藏+]

标签:

    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不流畅,可以使用两张图片拼出一个圆形头像

 

CALayer与UIBezierPath

标签:

原文地址:http://www.cnblogs.com/niaoniao/p/5423063.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!