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

【Core Animation】系列之(一) 自定义图层

时间:2015-11-22 01:28:44      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

        UIView的一个重要组成就是CALayer, 我们先创建一个自定义图层

 

//创建一个图层
  CALayer *layer = [CALayer layer];
  
  //设置大小
  layer.bounds = CGRectMake(0, 0, 60, 60);
  
  //设置位置
  layer.position = CGPointMake(100, 200);
  
  //设置背景色
  layer.backgroundColor = [UIColor blueColor].CGColor;
  
  [self.view.layer addSublayer:layer];

 

运行结果很简单,一个宽高60、蓝色背景的图层

技术分享

 

我们设置下内容试试,插入如下代码

 

//  layer.contents = (id)[UIImage imageNamed:@"Icon-60"].CGImage;
  layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"Icon-60"].CGImage);

 

图片结果显示

技术分享

 

注意到 代码里面有CGColor,CGImage 这样的格式转换

在设置内容时我用了两种转换方式,contents 类型为id,

CGImage类型是CGImageRef,第一种属于强制转换 ,第二种用__bridge

来桥接,还有CGColor ,为什么需要这种转换?

 

首先,CALayer是定义在QuartCore框架的[Core Animation]

CGImageRef、CGColorRef两种数据定义在CoreGraphics框架中的

UIColor、UIImage是定义在UIKit框架中的

其次,QuartCore和CoreGraphics框架是跨平台的,支持Mac OS X 、iOS

而UIKit 只能iOS上使用

所以为了保证可移植行QuartCore只能用CGImageRef、CGColorRef等

 

既然CALayer和UIView能实现相同的显示效果,那么谁比较好?

首先,相比CALayer,UIView增加了事件处理功能,CALayer不能处理用户

的触摸事件,

所以如果显示要与用户交互的话就用UIView,不用的话无所谓,

当然相比UIView,CALayer的性能会高一些

 

 

 

下一篇:02-position-anchorPoint

 

 

未完待续

【Core Animation】系列之(一) 自定义图层

标签:

原文地址:http://www.cnblogs.com/yoon/p/4985138.html

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