涪陵网站设计,统计站老站长推荐app视频,怎么查找网站的根目录,哪个网站开发小程序本文目录 一、添加一个简单的图层二、添加一个显示图片的图层三、为什么CALayer中使用CGColorRef和CGImageRef这2种数据类型#xff0c;而不用UIColor和UIImage#xff1f;四、UIView和CALayer的选择五、UIView和CALayer的其他关系* 上一讲已经说过#xff0c;UIView内部默认…本文目录 一、添加一个简单的图层二、添加一个显示图片的图层三、为什么CALayer中使用CGColorRef和CGImageRef这2种数据类型而不用UIColor和UIImage四、UIView和CALayer的选择五、UIView和CALayer的其他关系* 上一讲已经说过UIView内部默认有个CALayer对象(层)通过layer属性可以访问这个层。要注意的是这个默认的层不允许重新创建但可以往层里面添加子层 * UIView可以通过addSubview:方法添加子视图类似地CALayer可以通过addSublayer:方法添加子层 接下来演示一下如何添加子层 回到顶部 一、添加一个简单的图层 1 CALayer *myLayer [CALayer layer];2 // 设置层的宽度和高度100x1003 myLayer.bounds CGRectMake(0, 0, 100, 100);4 // 设置层的位置5 myLayer.position CGPointMake(100, 100);6 // 设置层的背景颜色红色7 myLayer.backgroundColor [UIColor redColor].CGColor;8 // 设置层的圆角半径为109 myLayer.cornerRadius 10;
10
11 // 添加myLayer到控制器的view的layer中
12 [self.view.layer addSublayer:myLayer]; * 第1行创建了一个自动释放的CALayer对象你也可以使用经典的alloc和init方法来创建 * 第12行将创建好的层添加到控制器的view的层中 回到顶部 二、添加一个显示图片的图层 1 CALayer *myLayer [CALayer layer];2 // 设置层的宽度和高度100x1003 myLayer.bounds CGRectMake(0, 0, 100, 100);4 // 设置层的位置5 myLayer.position CGPointMake(100, 100);6 // 设置需要显示的图片7 myLayer.contents (id)[UIImage imageNamed:lufy.png].CGImage;8 // 设置层的圆角半径为109 myLayer.cornerRadius 10;
10 // 如果设置了图片需要设置这个属性为YES才有圆角效果
11 myLayer.masksToBounds YES;
12
13 // 添加myLayer到控制器的view的layer中
14 [self.view.layer addSublayer:myLayer]; * 在第7行设置需要显示的图片注意这里用的是UIImage的CGImage属性是一种CGImageRef类型的数据 回到顶部 三、为什么CALayer中使用CGColorRef和CGImageRef这2种数据类型而不用UIColor和UIImage * 首先要知道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来实现。比如第1个红色的层可以用一个UIView来实现第2个显示图片的层可以用一个UIImageView来实现。 既然CALayer和UIView都能实现相同的显示效果那究竟该选择谁好呢 * 其实对比CALayerUIView多了一个事件处理的功能。也就是说CALayer不能处理用户的触摸事件而UIView可以 * 所以如果显示出来的东西需要跟用户进行交互的话用UIView如果不需要跟用户进行交互用UIView或者CALayer都可以 * 当然CALayer的性能会高一些因为它少了事件处理的功能更加轻量级 回到顶部 五、UIView和CALayer的其他关系 * UIView可以通过subviews属性访问所有的子视图类似地CALayer也可以通过sublayers属性访问所有的子层 * UIView可以通过superview属性访问父视图类似地CALayer也可以通过superlayer属性访问父层 * 下面再看一张UIView和CALayer的关系图 如果两个UIView是父子关系那么它们内部的CALayer也是父子关系。转载于:https://www.cnblogs.com/jameslbj/p/4290513.html