你的位置:首页 > 操作系统

[操作系统]IOS CALayer(二)


UIview内部有个默认的CALayer对象层,虽然我门不可以重新创建它,但是我门可以再其上面添加子层。

我们知道,UIView有 addSubview:方法,同样,CALayer也有addSublayer:方法。我门可以通过addSublayer:再已有layer上添加自层。

下面我门演示如何添加自层。

 

//// ViewController.m// CX - CALayer(二)//// Created by ma c on 16/3/19.// Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {  [super viewDidLoad];  //初始化layer  CALayer * layer = [[CALayer alloc]init];  //设置layer的frame  layer.frame = CGRectMake(0, 20, self.view.frame.size.width, 200);  //设置layer的背景颜色  layer.backgroundColor = [UIColor orangeColor].CGColor;  //再self.view.layer上添加layer  [self.view.layer addSublayer:layer];    }@end

除了这种简单的图层,我门还可以设置图片的图层。(layer.contents = (id)[UIImage imageNamed:@"nvshen.jpg"].CGImage;)

//// ViewController.m// CX - CALayer(二)//// Created by ma c on 16/3/19.// Copyright © 2016年 xubaoaichiyu. All rights reserved.//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {  [super viewDidLoad];  //初始化layer  CALayer * layer = [[CALayer alloc]init];  //设置layer的frame  layer.frame = CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height);  //添加图片  layer.contents = (id)[UIImage imageNamed:@"nvshen.jpg"].CGImage;  //设置layer的背景颜色  layer.backgroundColor = [UIColor orangeColor].CGColor;  //再self.view.layer上添加layer  [self.view.layer addSublayer:layer];    }@end

下面引用MJ神的讲解:

为什么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的选择

* 其实,对比CALayer,UIView多了一个事件处理的功能。也就是说,CALayer不能处理用户的触摸事件,而UIView可以

* 所以,如果显示出来的东西需要跟用户进行交互的话,用UIView;如果不需要跟用户进行交互,用UIView或者CALayer都可以

* 当然,CALayer的性能会高一些,因为它少了事件处理的功能,更加轻量级

UIView和CALayer的其他关系

* UIView可以通过subviews属性访问所有的子视图,类似地,CALayer也可以通过sublayers属性访问所有的子层

* UIView可以通过superview属性访问父视图,类似地,CALayer也可以通过superlayer属性访问父层

* 下面再看一张UIView和CALayer的关系图:

如果两个UIView是父子关系,那么它们内部的CALayer也是父子关系。




到普吉岛旅游要花多少钱去普吉岛签证要几天办理普吉岛签证费用出发去普吉岛旅游普吉岛旅游报价芜湖市去巢湖半汤温泉有公交车吗??芜湖市去巢湖半汤温泉公交车坐几路? 芜湖市去巢湖半汤温泉怎么走?芜湖市去巢湖半汤温泉乘车路线? 合肥到巢湖半汤温泉怎么坐车?合肥到巢湖半汤温泉坐车怎么走? 合肥到巢湖半汤温泉有多远?合肥到巢湖半汤温泉开车多长时间? 桂林火车站怎么去阳朔?车费多少钱?需要多久 从深圳出发到厦门玩4天,大概多少钱? 海口到三亚的动车最晚一班车是几点?全程多长时间?票价多少? 去丽江旅游会不会出现高原反应?该如何应对? 清远英德九州驿站攻略?英德九州驿站树上围屋可以预订吗? 英德九州驿站最新团购价格?英德天门沟九洲驿站门票优惠政策? 英德九州驿站官网,英德天门沟九洲驿站官方网站。 英德九州驿站电话?英德天门沟九洲驿站门票预订? 夹金山美食 保亭黎族苗族美食之山兰酒 保亭黎族苗族旅游景点门票 保亭黎族苗族特产之艺术品 0805-FLWC-USD Datasheet 0805-FLWC-USD Datasheet 0805-FLWC-USO Datasheet 0805-FLWC-USO Datasheet 0805-FLWC-UYG Datasheet 0805-FLWC-UYG Datasheet 清明节旅游哪里好 清明节旅游哪里好 清明节旅游哪里好 清明节旅游去哪 清明节旅游去哪 清明节旅游去哪 清明节放假旅游 清明节放假旅游 清明节放假旅游