一.添加一个图层 
  添加图层的步骤: 
  1.创建layer 
  2.设置layer的属性(设置了颜色,bounds才能显示出来) 
  3.将layer添加到界面上(控制器view的layer上)

@interface ViewController ()@property(nonatomic,strong) UIView *customView;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];/** 1.创建一个layer **///使用对象方法创建//CALayer *layer = [[CALayer alloc] init];//使用类方法创建CALayer *layer = [CALayer layer];/** 2.设置layer的属性 **/layer.backgroundColor = [UIColor brownColor].CGColor;layer.bounds = CGRectMake(0,0,100,100);layer.position = CGPointMake(100, 100);/**  3.把layer添加到界面上 **/[self.view.layer addSublayer:layer];
}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];
}@end

二.添加一个显示图片的图层

@interface ViewController ()
@property(nonatomic,strong) UIView *customView;
@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];//创建一个layerCALayer *layer = [CALayer layer];//设置layer的属性layer.bounds = CGRectMake(100,100,100,100);layer.position = CGPointMake(100, 100);//设置需要显示的图片layer.contents = (id)[UIImage imageNamed:@"logo.jpg"].CGImage;//设置圆角半径为10layer.cornerRadius = 10;//如果设置了图片,那么需要设置这个属性YES才能显示圆角效果layer.masksToBounds = YES;//设置边框layer.borderWidth = 3;layer.borderColor = [UIColor brownColor].CGColor;[self.view.layer addSublayer:layer];
}- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];
}@end

三.CGColorRef和CGImageRef数据类型 
  简单说明CALayer是定义在QuartzCore框架中的。CGImageRef, CGColorRef两种数据类型是定义在CoreGraphics框架中的。UIColor,UIImage是定义在UIKit框架中的。 
其次,QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOS和Mac OS X上都能使用,但是UIKit只能在iOS中使用。 
因此,为了保证可移植性,QuartzCore不能使用UIImage,UIColor,只能使用CGImageRef,CGColorRef。 
不过很多情况下,可以通过UIKit对象的特定方法,得到CoreGraphics对象,比如UIImage的CGImage方法可以返回一个CGImageRef。

四.UIView和CALayer的选择 
  可以发现,前面的2个效果不仅可以通过添加层来实现,还可以通过添加UIView来实现。既然CALayer和UIView都能实现相同的显示效果,那究竟该选择谁好呢? 
其次,对比CALayer,UIView多了一个事件处理的功能。也就是说,CALayer不能处理用户的触摸事件,而UIView可以。 
所以,在选择的过程中,需要考虑到实际的情况,如果显示出来的东西需要跟用户进行交互的话,用UIView;如果不需要跟用户进行交互,用UIView或者CALayer都可以。 
当然,CALayer的性能会高一些,因为它少了事件处理的能力,更加轻量级。

转载于:https://www.cnblogs.com/jiuyi/p/10103739.html

CALayer创建图层(转)相关推荐

  1. iOS开发UI篇—CAlayer(创建图层)

    一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控制器view的layer上)  1 // 2 ...

  2. iOS - CALayer 绘图层

    1.CALayer 绘图层 在 iOS 系统中,你能看得见摸得着的东西基本上都是 UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是 UIView.其实 UIView 之 ...

  3. iOS CALayer专用图层理解与使用方法一(CAShapeLayer、CATextLayer、CATransformLayer)

    1. 概述 本专栏之前的文章讲述了CALayer的使用以及一些动画操作等,本篇文章主要对CALayer的一些专用图层CAShapeLayer.CATextLayer.CATransformLayer进 ...

  4. 背景图层和普通图层的区别_新手如何在PS中创建图层?不容错过的7种方法,你值得学习...

    昨天跟小波一起认识了PS图层的童鞋应该已经对它不陌生了,那么在了解之后就要来实践操作,毕竟实践出真知嘛.那这一章就一起来学习在PS中创建图层吧. 在PS中,图层的创建方法有很多种,包括在"图 ...

  5. oracle数据库无法显示图层,ArcMap 无法在Oracle中创建图层案例

    最近同事在客户的现场使用ArcMap无法创建图层的问题,简单记录一下处理过程. 软件版本环境是: ArcGIS Desktop 10.2.1 Oracle 11.2.0.4 由于保密原因,无法提供错误 ...

  6. 【ArcGIS风暴】ArcGIS解决数字化之前创建图层时未定义坐标系而导致数据跑偏的问题

    数字化时,第一步需要创建点线面图层,创建图层需要指定一个地理坐标系,但如果忽略了这一步,我们数字化的适量数据时没有坐标系的,后果很严重,如果数字化工作只做了一点点,可以卷土重来:如果是大量工作的话,可 ...

  7. AutoCAD如何创建图层?开关图层、冻结图层、锁定图层怎么运用?

    这个在工作中大家都有过相关的了解的,图层的利用可以让我们更加方便的查看图纸以及进行CAD的相关编辑,那大家都知道具体是什么意思吗? 1.创建图层--创建图层的意义就在于更加方便的区分每一个图层具体的表 ...

  8. arcgis新建图层信息复制_arcgis如何创建图层要素 专家详解

    arcgis作为地理数据处理软件,最基本的操作莫过于新建图层要素并进行相应的编辑操作.那面对于一位刚开始接触arcgis软件或者需要用arcgis软件进行图层编辑创建的用户如何来进行新建图层呢. 工具 ...

  9. ArcGIS创建图层包:分享图层数据以及符号

    ArcGIS创建图层包 如果你想单独把某一个图层的数据及其符号信息导出的话,可以使用ArcGIS创建图层包功能,这样别人不仅可以得到你的图层数据,同时也会得到你自己制作的符号信息(如图层的符号化.标注 ...

最新文章

  1. JavaScript 字符串连接性能比较
  2. golang基础环境配置
  3. JSON在PHP中的基本应用
  4. [导入]博客搬家了,呵呵
  5. Necessary configuration to get Smart business tile work in UXT/928
  6. centos7 iptables 端口转发 保存_iptables 防火墙
  7. 08服务器许可证安装向导,08_安装部署GRID许可证服务器.pdf
  8. 学委作业管理系统c语言,c语言大作业-学生信息管理系统.doc
  9. JavaScript中call,apply,bind方法的总结
  10. 支持HTTP2的cURL——基于Alpine的最小化Docker镜像
  11. opencv之透视变换cvWarpPerspective
  12. 【RF】射频集成电路与系统设计
  13. 2020软考软件设计师--基础知识培训视频-任铄(小任老师)-专题视频课程
  14. 建议直接收藏,阿里巴巴开源15个顶级Java项目
  15. Cubase Pro 12 v12.0.0 Full R2R WiN 音乐制作软件完整版
  16. 什么是 360 评估?
  17. 数字信号处理FFT快速傅立叶变换MATLAB实现——实例
  18. JAVA面试题集(2) (转)
  19. 两万亿医疗市场中的IT生意 穆穆-movno1
  20. 【转】电路板绘制经验积累 (一至五)

热门文章

  1. arduino驱动LD3320语音识别模块
  2. win10打开蓝牙_win10蓝牙开关不见了
  3. 欲了解美国人 30部中国人不得不看的美国电影
  4. 实验二 SQL 语言——SELECT 查询操作(第一部分)
  5. 如何优雅的完成一场说来就来的APP自建
  6. 超3成医院未通过等保测评?亚信安全终端一体化赋能医疗行业安全
  7. Chrome浏览器ERR_INVALID_SIGNED_EXCHANGE解决方案
  8. dialog 刘海屏、水滴屏、全面屏 全屏显示
  9. 如何解决刷新一瞬间 出现样式未加载完 或者 出现VUE代码问题
  10. 今日错题(10.6)