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

转载于:https://www.cnblogs.com/niaoniao/p/5423063.html

CALayer与UIBezierPath相关推荐

  1. 如何只为 UIView 的左上角和右上角设置 cornerRadius?

    跳到主内容 有没有办法cornerRadius只设置 a 的左上角和右上角UIView? 我尝试了以下操作,但最终再也看不到视图了. UIView *view = [[UIView alloc] in ...

  2. 小知识六、CALayer动画

    CAShapeLayer 圆形指示器 let ovalShapeLayer: CAShapeLayer = CAShapeLayer()let anotherOvalShapeLayer: CASha ...

  3. CALayer 知识:创建带阴影效果的圆角图片图层和创建自定义绘画内容图层

    效果如下: KMLayerDelegate.h 1 #import <UIKit/UIKit.h> 2 3 @interface KMLayerDelegate : NSObject 4 ...

  4. CAShapeLayer + UIBezierPath

    UIBezierPath: UIBezierPath是在 UIKit 中的一个类,继承于NSObject,可以创建基于矢量的路径.使用此类可以定义常见的圆形.多边形等形状 .我们使用直线.弧(arc) ...

  5. IOS Animation-CAShapeLayer、UIBezierPath与Animation的结合

    IOS Animation-CAShapeLayer.UIBezierPath与Animation的结合 在阅读本文之前,对CAShapeLayer.UIBezierPath不熟悉的话,可以先阅读文章 ...

  6. UIBezierPath和CAShapeLayer画直线、CGContextRef画直线两种方案

    在view的相关方法中可直接使用UIBezierPath和CAShapeLayer画图形- (void)makeBezierPath {/**CAShapeLayer属于QuartzCore框架,继承 ...

  7. iOS开发 贝塞尔曲线UIBezierPath(后记)

    使用CAShapeLayer与UIBezierPath可以实现不在view的drawRect方法中就画出一些想要的图形 . 1:UIBezierPath: UIBezierPath是在 UIKit 中 ...

  8. 放肆地使用UIBezierPath和CAShapeLayer画各种图形

    CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CAL ...

  9. ios 贝塞尔曲线 颜色填充_iOS贝塞尔曲线(UIBezierPath)的基本使用方法

    简介 UIBezierPath是对Core Graphics框架的一个封装,使用UIBezierPath类我们可以画出圆形(弧线)或者多边形(比如:矩形)等形状,所以在画复杂图形的时候会经常用到. 分 ...

最新文章

  1. 图论(二分图构造) ---- 二分图的性质 C. Arpa’s overnight party and Mehrdad’s silent entering
  2. python读数据-如何用 Python 读取数据?
  3. 《Spring Cloud微服务架构开发实战》_董超笔记
  4. 你所不知道的端口号知识!
  5. 如何使用FF的Firebug组件中的net工具查看页面元素加载消耗时间
  6. 在线教育如何应对流量洪峰?阿里云专家:上云+云数据库是最佳路径
  7. day5-shutil模块
  8. matlab程序求尖锐度,业务名称
  9. 一个很好用的DBHelper类(包括使用SQL语句 存储过程 事务 做相关操作) 入门级
  10. windows的libcurl下zlib1.dll问题
  11. 网页布局02 盒子模型
  12. 使用AsyncTask类实现简单的异步处理操作
  13. 元素滚动scroll系列(附实例、图解)
  14. 仿斗鱼、美团、网易邮箱等 弹窗效果
  15. 手把手教你注册谷歌账号 亲测有效 快来学
  16. Unity资源的基本类型
  17. 网页实现中英文切换方式对比与实现
  18. 程序员年龄变大后的职业出路是什么?
  19. 阿里巴巴和淘宝集团web安全标准
  20. json_encode函数参数详解

热门文章

  1. windows tomcat 升级openssl_Linunx开发环境配置——Tomcat
  2. 静态路由与动态路由概念及实例
  3. 【华为HCNA】访问控制列表ACL实例配置
  4. MySQL的事务与事务隔离
  5. [leetcode] 题型整理之图论
  6. pl/sql developer导入导出
  7. 对mysql的各种sql语句如何对表加锁的实验
  8. 中午xxx遭受攻击,然后发现C盘空间体积缩小,发现该目录占用1G多,全部是站点
  9. Table options do not contain an option key ‘connector‘ for discovering a connector
  10. css3加载图片淡入效果