CALayer 详解(转载)
2015-05-10 12:14
561 查看
原文地址
第一、综述
UIView的继承结构为:UIResponder:NSObject。可以看出UIView的直接父类为UIResponder类,.CALayer的继承结构:NSObject,直接从NSObject继承,因为缺少了UIResponder类,由上可见UIResponder是用来响应事件的,也就是说UIView可以响应用户事件,所以CALayer不能响应任何的用户事件,UIView是在/System/Library/Frameworks/UIKit.framework中定义的。
我们都知道UIKit主要是用来构建用户界面并且是可以响应事件的。CALayer是在/System/Library/Frameworks/QuartzCore.framework定义的。而且CALayer作为一个低级的可以承载绘制内容的底层对象出现在该框架中。
第二、UIView 和CALayer的区别
。
苹果官方文档:
Core Animation doesn't provide a means for actually displaying layers in a window, they must be hosted by a view. When paired with a view, the view must provide event-handling for the underlying layers, while the layers provide display of the content.
The view system in iOS is built directly on top of Core Animation layers. Every instance of UIView automatically creates an instance of a CALayer class and sets it as the value of the view’s layer property. You can add sublayers to the view’s layer as needed.
On Mac OS X you must configure an NSView instance in such a way that it can host a layer
第三、属性
设置背景色,
阴影的偏差值,
阴影的半径,
阴影的颜色,
阴影的透明度,
子层的frame值。
把新的层add到view的层里。
设置边缘宽度
设置边缘颜色
代码如下:
CALayer*subLayer=[CALayerlayer];
subLayer.frame=CGRectMake(80,140,100,100);
subLayer.backgroundColor=[UIColorredColor].CGColor;
subLayer.cornerRadius=15;
subLayer.shadowColor=[UIColorblueColor].CGColor;
subLayer.shadowOffset=CGSizeMake(0,2.0);
subLayer.shadowOpacity=1.0;
subLayer.borderColor=[UIColoryellowColor].CGColor;
subLayer.borderWidth=3.0;
[self.view.layeraddSublayer:subLayer];
截图:
第三、. masksToBounds : 很重要的属性,可以用此属性来防止子元素大小溢出父元素,如若防止溢出,设为 true
CALayer*subLayer=[CALayerlayer];
subLayer.frame=CGRectMake(80,140,100,100);
subLayer.cornerRadius=15;
subLayer.shadowColor=[UIColorblueColor].CGColor;
subLayer.shadowOffset=CGSizeMake(0,2.0);
subLayer.shadowOpacity=1.0;
subLayer.borderColor=[UIColoryellowColor].CGColor;
subLayer.borderWidth=3.0;
subLayer.contents=(id)[UIImageimageNamed:@"sample.jpg"].CGImage;
subLayer.masksToBounds=YES;
[self.view.layeraddSublayer:subLayer];
result:
第一、综述
UIView的继承结构为:UIResponder:NSObject。可以看出UIView的直接父类为UIResponder类,.CALayer的继承结构:NSObject,直接从NSObject继承,因为缺少了UIResponder类,由上可见UIResponder是用来响应事件的,也就是说UIView可以响应用户事件,所以CALayer不能响应任何的用户事件,UIView是在/System/Library/Frameworks/UIKit.framework中定义的。
我们都知道UIKit主要是用来构建用户界面并且是可以响应事件的。CALayer是在/System/Library/Frameworks/QuartzCore.framework定义的。而且CALayer作为一个低级的可以承载绘制内容的底层对象出现在该框架中。
第二、UIView 和CALayer的区别
。
苹果官方文档:
Core Animation doesn't provide a means for actually displaying layers in a window, they must be hosted by a view. When paired with a view, the view must provide event-handling for the underlying layers, while the layers provide display of the content.
The view system in iOS is built directly on top of Core Animation layers. Every instance of UIView automatically creates an instance of a CALayer class and sets it as the value of the view’s layer property. You can add sublayers to the view’s layer as needed.
On Mac OS X you must configure an NSView instance in such a way that it can host a layer
第三、属性
设置背景色,
阴影的偏差值,
阴影的半径,
阴影的颜色,
阴影的透明度,
子层的frame值。
把新的层add到view的层里。
设置边缘宽度
设置边缘颜色
代码如下:
CALayer*subLayer=[CALayerlayer];
subLayer.frame=CGRectMake(80,140,100,100);
subLayer.backgroundColor=[UIColorredColor].CGColor;
subLayer.cornerRadius=15;
subLayer.shadowColor=[UIColorblueColor].CGColor;
subLayer.shadowOffset=CGSizeMake(0,2.0);
subLayer.shadowOpacity=1.0;
subLayer.borderColor=[UIColoryellowColor].CGColor;
subLayer.borderWidth=3.0;
[self.view.layeraddSublayer:subLayer];
截图:
第三、. masksToBounds : 很重要的属性,可以用此属性来防止子元素大小溢出父元素,如若防止溢出,设为 true
CALayer*subLayer=[CALayerlayer];
subLayer.frame=CGRectMake(80,140,100,100);
subLayer.cornerRadius=15;
subLayer.shadowColor=[UIColorblueColor].CGColor;
subLayer.shadowOffset=CGSizeMake(0,2.0);
subLayer.shadowOpacity=1.0;
subLayer.borderColor=[UIColoryellowColor].CGColor;
subLayer.borderWidth=3.0;
subLayer.contents=(id)[UIImageimageNamed:@"sample.jpg"].CGImage;
subLayer.masksToBounds=YES;
[self.view.layeraddSublayer:subLayer];
result:
相关文章推荐
- asp.net___web.config详解 (转载)
- LOG4J.PROPERTIES配置详解(转载)
- Maven的pom.xml文件详解【转载】
- 转载:SVN中trunk,branches,tags用法详解
- WebConfig配置文件详解(转载自逆心的博客)
- 转载 详解SQL Server的两个存储过程sp_MSforeachtablesp_MSforeachdb
- WordPress 数据库操作WPDB对象($wpdb)用法详解【转载】
- 【转载整理】mysql权限分配详解
- 【转载】Android Studio Service AIDL 详解
- memset用法详解(转载,删了些冗余的)
- GDI+ for VCL基础 -- 颜色调整矩阵ColorMatrix详解(转载http://blog.csdn.net/maozefa)
- CALayer 属性详解
- [转载]Apple Watch 开发详解
- C语言:内存字节对齐详解[转载]
- linux epoll事件模型详解(转载)
- (转载)Spring data jpa 详解
- mapreduce框架详解 (转载)
- 转载: Python--详解Python中re.sub 作者:Mrzhoug
- TreeView详解(转载)
- [转载]CSS之Position详解