CALayer与UIBezierPath
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相关推荐
- 如何只为 UIView 的左上角和右上角设置 cornerRadius?
跳到主内容 有没有办法cornerRadius只设置 a 的左上角和右上角UIView? 我尝试了以下操作,但最终再也看不到视图了. UIView *view = [[UIView alloc] in ...
- 小知识六、CALayer动画
CAShapeLayer 圆形指示器 let ovalShapeLayer: CAShapeLayer = CAShapeLayer()let anotherOvalShapeLayer: CASha ...
- CALayer 知识:创建带阴影效果的圆角图片图层和创建自定义绘画内容图层
效果如下: KMLayerDelegate.h 1 #import <UIKit/UIKit.h> 2 3 @interface KMLayerDelegate : NSObject 4 ...
- CAShapeLayer + UIBezierPath
UIBezierPath: UIBezierPath是在 UIKit 中的一个类,继承于NSObject,可以创建基于矢量的路径.使用此类可以定义常见的圆形.多边形等形状 .我们使用直线.弧(arc) ...
- IOS Animation-CAShapeLayer、UIBezierPath与Animation的结合
IOS Animation-CAShapeLayer.UIBezierPath与Animation的结合 在阅读本文之前,对CAShapeLayer.UIBezierPath不熟悉的话,可以先阅读文章 ...
- UIBezierPath和CAShapeLayer画直线、CGContextRef画直线两种方案
在view的相关方法中可直接使用UIBezierPath和CAShapeLayer画图形- (void)makeBezierPath {/**CAShapeLayer属于QuartzCore框架,继承 ...
- iOS开发 贝塞尔曲线UIBezierPath(后记)
使用CAShapeLayer与UIBezierPath可以实现不在view的drawRect方法中就画出一些想要的图形 . 1:UIBezierPath: UIBezierPath是在 UIKit 中 ...
- 放肆地使用UIBezierPath和CAShapeLayer画各种图形
CAShapeLayer 是 CALayer 的子类,但是比 CALayer 更灵活,可以画出各种图形,当然,你也可以使用其他方式来画,随你. 杂谈 在 CAShapeLayer 中,也可以像 CAL ...
- ios 贝塞尔曲线 颜色填充_iOS贝塞尔曲线(UIBezierPath)的基本使用方法
简介 UIBezierPath是对Core Graphics框架的一个封装,使用UIBezierPath类我们可以画出圆形(弧线)或者多边形(比如:矩形)等形状,所以在画复杂图形的时候会经常用到. 分 ...
最新文章
- 图论(二分图构造) ---- 二分图的性质 C. Arpa’s overnight party and Mehrdad’s silent entering
- python读数据-如何用 Python 读取数据?
- 《Spring Cloud微服务架构开发实战》_董超笔记
- 你所不知道的端口号知识!
- 如何使用FF的Firebug组件中的net工具查看页面元素加载消耗时间
- 在线教育如何应对流量洪峰?阿里云专家:上云+云数据库是最佳路径
- day5-shutil模块
- matlab程序求尖锐度,业务名称
- 一个很好用的DBHelper类(包括使用SQL语句 存储过程 事务 做相关操作) 入门级
- windows的libcurl下zlib1.dll问题
- 网页布局02 盒子模型
- 使用AsyncTask类实现简单的异步处理操作
- 元素滚动scroll系列(附实例、图解)
- 仿斗鱼、美团、网易邮箱等 弹窗效果
- 手把手教你注册谷歌账号 亲测有效 快来学
- Unity资源的基本类型
- 网页实现中英文切换方式对比与实现
- 程序员年龄变大后的职业出路是什么?
- 阿里巴巴和淘宝集团web安全标准
- json_encode函数参数详解
热门文章
- windows tomcat 升级openssl_Linunx开发环境配置——Tomcat
- 静态路由与动态路由概念及实例
- 【华为HCNA】访问控制列表ACL实例配置
- MySQL的事务与事务隔离
- [leetcode] 题型整理之图论
- pl/sql developer导入导出
- 对mysql的各种sql语句如何对表加锁的实验
- 中午xxx遭受攻击,然后发现C盘空间体积缩小,发现该目录占用1G多,全部是站点
- Table options do not contain an option key ‘connector‘ for discovering a connector
- css3加载图片淡入效果