一.添加一个图层 
  添加图层的步骤: 
  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(,
,
,
);
layer.position = CGPointMake(, ); /** 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];
//创建一个layer
CALayer *layer = [CALayer layer];
//设置layer的属性
layer.bounds = CGRectMake(,,,);
layer.position = CGPointMake(, );
//设置需要显示的图片
layer.contents = (id)[UIImage imageNamed:@"logo.jpg"].CGImage;
//设置圆角半径为10
layer.cornerRadius = ;
//如果设置了图片,那么需要设置这个属性YES才能显示圆角效果
layer.masksToBounds = YES;
//设置边框
layer.borderWidth = ;
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的性能会高一些,因为它少了事件处理的能力,更加轻量级。

CALayer创建图层(转)的更多相关文章

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

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

  2. iOS - CALayer 绘图层

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

  3. ArcGIS api for javascript——明确的创建图层列表

    描述 本例展示了如何确切地创建一个地图服务里的图层列表.这个列表由HTML checkboxe组成,可用用于开关图层的可见性. 函数updateLayerVisibility()包含开关图层的逻辑.函 ...

  4. ArcGIS api for javascript——动态创建图层列表

    描述 本例循环地图服务里的所有图层并增加每个图层到一个带checkbox的列表,checkbox能设置图层的显示或隐藏.动态创建列表的优势是所有的图层都会包含在列表中,即使服务器管理员删除或增加了图层 ...

  5. gimp怎么移动选取中的图像并创建图层

    gimp怎么移动选取中的图像并创建图层 https://jingyan.baidu.com/article/414eccf6bf4d6e6b431f0a3b.html 听语音 原创 | 浏览:1148 ...

  6. NX二次开发-UFUN创建图层类别UF_LAYER_create_category

    NX11+VS2013 #include <uf.h> #include <uf_layer.h> UF_initialize(); //创建图层类别 UF_LAYER_cat ...

  7. IOS第18天(2,CALayer自定义图层)

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  8. [iOS Animation]-CALayer 专用图层

    专用图层 复杂的组织都是专门化的 Catharine R. Stimpson 到目前为止,我们已经探讨过CALayer类了,同时我们也了解到了一些非常有用的绘图和动画功能.但是Core Animati ...

  9. 12.22笔记(关于CALayer//Attributes//CALayer绘制图层//CALayer代理绘图//CALayer动画属性//CALayer自定义子图层//绘图pdf文件//绘图渐变效果)

    12.22笔记 pdf下载文件:https://www.evernote.com/shard/s227/sh/f81ba498-41aa-443b-81c1-9b569fcc34c5/f033b89a ...

随机推荐

  1. 4.kafka的安装部署

    为了安装过程对一些参数的理解,我先在这里提一下kafka一些重点概念,topic,broker,producer,consumer,message,partition,依赖于zookeeper, ka ...

  2. shell 复制/备份文件 脚本

    #!/bin/sh # author hapday # -- echo "以时间日期为名称基准备份 war 包." date +%Y-%m-%d-%H-%M-%S cp artup ...

  3. drupal对数据库操作

    // nodenode_load($nid = NULL, $vid = NULL, $reset = FALSE);node_load_multiple($nids = array(), $cond ...

  4. 使用Android Studio搭建Android开发环境

    一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA开发环境,旨 ...

  5. Linux常用三十七条指令

    Linux常用三十七条指令 基础指令(11):ls,pwd,cd,mkdir,touch,cp.mv,rm,vim,>/>>/,cat 进阶指令(10):df,free,head,t ...

  6. ubuntu GITLAB完全导入SVN(提交历史,用户)项目

    从SVN导入到GITLAB目前没有直接的方案,通常需要通过GIT转换:SVN –>GIT –>GITLAB.通过这种方式,将SVN的提交历史,用户信息一并导入到gitlab 注:本文只适用 ...

  7. 由AlphaGO引发的思考

    这几天AlphaGO的人机大战炒得热火朝天,给谷歌的AI做了一次大大的广告,可谓风头出尽,大有AI战胜一切的“趋势”.而且,像阿法狗.阿法猫之类的新词不断,成了饭前茶后人们议论的热点.作为一个留学过日 ...

  8. Appcan开发之页面布局与CSS排版(转)

    在Appcan开发中,首先要进行的就是页面布局,然后在这个页面上填充数据,加上互动元素,最终构成完整的应用. 因为appcan是使用HTML5+CSS3+JavaScript技术来进行开发,所以与普通 ...

  9. solidity语言2

    变量类型(Value Types) # 布尔型 关键字 bool 值 true , false 操作符 !, &&, ||, ==, != # 整型 关键字 int(int256), ...

  10. Dynamics CRM GBK编码

    Dynamics CRM用文本汉字为条件去请求数据时,传过去的竟然是GBK编码⊙_⊙ 下面这段代码解决了我的问题,这是拷贝自网上一位大神的博客: http://qq100002656.blog.163 ...