标签:
在iOS中,你能看到的东西基本上都是UIVIew,比如一个按钮,一个文本标签,一个图标等等,这些都是UIView
其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层
在创建UIView对象的时候,UIView内部会自动穿件一个图层(即CALayer对象),通常UIView 的layer属性可以访问这个层
当UIView需要显示到屏幕上时,会调用drawRect方法进行绘制,并且会讲所有的内容绘制到自己的图层上,绘制完成之后将图层拷贝到屏幕上,于是就完成了UIView的显示
UIView本身是不具备显示功能的,是它内部的层才有显示功能
通过操作CALayer对象,可以很方便地调整UIView的一些外观属性
。阴影
。圆角大小
。边框宽度和颜色
// 设置阴影
let viewR = UIView()
viewR.frame = CGRectMake(10, 10, 200, 200)
viewR.center = view.center
self.view.addSubview(viewR)
viewR.backgroundColor = UIColor.redColor()
// 设置透明图
// Opacity:不透明度
viewR.layer.shadowOpacity = 1
// 注意 图层的颜色都是核心绘图的框架
viewR.layer.shadowRadius = 10
// 圆角半径
viewR.layer.cornerRadius = 100
旋转和缩放
// _tripView.layer.transform = CATransform3DMakeRotation(M_PI, 1, 1, 0);
//缩放
// _tripView.layer.transform = CATransform3DMakeScale(0.5, 0.5, 1);
// 快速进行图层缩放 KVC x,
// [_tripView.layer setValue:@0.5 forKeyPath:@"transform.scale"];
[_tripView.layer setValue:@(M_PI) forKeyPath:@"transform.rotation"];
CALayer的issue:
UIView和CALayer的选择:
1、两者可以实现相同的界面效果
2、对比CALayer,UIView多了一个时间处理功能,也就是说,CALayer不能处理用户的触摸事件,而UIView可以
3、所以,如果显示出来的东西需要跟用户进行交互的话,用UIView;如果不需要跟用户交互的话,用两者都是可以的
4、CALayer的性能会高一些,因为它少了事件处理的功能,更加轻量化
标签:
原文地址:http://blog.csdn.net/u014275966/article/details/51363178