IOS CALayer详解
来源:互联网 发布:linux守护线程 编辑:程序博客网 时间:2024/06/05 13:42
在IOS中CALayer是一个很常用到的东西,每个UIView都有CALayer,即 UIView.layer。CALayer能够对 UIView做许多设定,如:阴影,圆角和透明等效果。
CALayer直接从NSObject继承,因为缺少了UIResponder类的支持,所以CALayer不能响应任何用户事件。而UIView是对CALayer的高级则实现和封装。
每一个UIView都有一个CALayer,其所有视觉效果都是在这个layer上进行的。可以认为UIView处理用户事件的,而CALayer注重的则是显示效果。
CALayer是属于QuartzCore framework的,所以使用CALayer需要引入QuartzCore framework,且需要引用QuartzCore/QuartzCore.h。
示例如下:
折叠C/C++ Code复制内容到剪贴板
- #import <QuartzCore/QuartzCore.h>
- -(void)ViewDidLoad
- {
- //首先配置view的layer属性,展示一个带圆角的层。
- self.view.layer.backgroundColor =[UIColor orangeColor].CGColor;
- self.view.layer.cornerRadius =20.0;
- self.view.layer.frame = CGRectInset(self.view.layer.frame, 20, 20);
- //再添加一个带阴影效果的子层
- CALayer *sublayer = [CALayer layer];
- sublayer.backgroundColor = [UIColor blueColor].CGColor;
- sublayer.shadowOffset = CGSizeMake(0, 3);
- sublayer.shadowRadius = 5.0;
- sublayer.shadowColor = [UIColor blackColor].CGColor;
- sublayer.shadowOpacity = 0.8;
- sublayer.frame = CGRectMake(30, 30, 128, 192);
- [self.view.layer addSublayer:sublayer];
- //为子层增加内容(图片),你还可以设置层的边框,代码如下:
- sublayer.contents =(id)[UIImage imageNamed:@"tekuba_net.png"].CGImage;
- sublayer.borderColor =[UIColor blackColor].CGColor;
- sublayer.borderWidth =2.0;
- }
//我们可能需要视图有圆角和阴影的效果,你可能说很容易设置cornerRadius属性就行。实际上你即算是设置了cornerRadius属性,图片仍然不会显示圆角。因为如果是这样,这个层的阴影显示就没有了。简单的实现方式是通过两个层来实现:
//配置子视图为阴影
CALayer *sublayer =[CALayer layer];
sublayer.backgroundColor =[UIColor blueColor].CGColor;
sublayer.shadowOffset = CGSizeMake(0, 3);
sublayer.shadowRadius =5.0;
sublayer.shadowColor =[UIColor blackColor].CGColor;
sublayer.shadowOpacity =0.8;
sublayer.frame = CGRectMake(30, 30, 128, 192);
sublayer.borderColor =[UIColor blackColor].CGColor;
sublayer.borderWidth =2.0;
sublayer.cornerRadius =10.0;
[self.view.layer addSublayer:sublayer];
//在子层上添加一个圆角视图
CALayer *imageLayer =[CALayer layer];
imageLayer.frame = sublayer.bounds;
imageLayer.cornerRadius =10.0;
imageLayer.contents =(id)[UIImage imageNamed:@"tekuba_net.png"].CGImage;
imageLayer.masksToBounds =YES;
[sublayer addSublayer:imageLayer];
下面就逐个过下 CALayer 的一些重要属性:
shadowPath : 设置CALayer背景位置
shadowOffset : shadow 的大小
shadowOpacity : shadow的透明效果
shadowRadius : shadow的渐变距离,从外围开始,往里渐变 shadowRadius 距离
masksToBounds : 很重要的属性,可以用此属性来防止子元素大小溢出父元素,如若防止溢出,请设为 true。决定子layer是否被当前layer的边界剪切
borderWidth 和 boarderColor : 边框颜色和宽度,很常用
opacity : UIView 的透明效果
cornerRadius : UIView 的圆角
0 0
- IOS CALayer 详解
- iOS CALayer 详解
- IOS CALayer 详解
- iOS CALayer 详解
- IOS CALayer 详解
- IOS 之 CALayer详解
- IOS CALayer详解
- IOS CALayer 详解
- IOS CALayer 详解
- iOS CALayer详解,动画详解。
- IOS 之 CAlayer的一些属性详解
- IOS SDK详解之CALayer(一)
- IOS SDK详解之CALayer(二)
- IOS SDK详解之CALayer(一)
- IOS SDK详解之CALayer(二)
- iOS之CALayer核心动画详解
- iOS 开发 UIView和CALayer详解
- iOS: CALayer
- 不必遗憾,若是美好,叫做精彩,若是糟糕,叫做经历
- 关于SOCKET
- 动态规划题目(一)——换零钱
- 关于struct在内存中的存储结构及妙用
- Object-c 总结之NSDate
- IOS CALayer详解
- 作业
- Git分支开发图解
- eclipse最有用快捷键整理
- [LeetCode] Length of Last Word
- BZOJ 1030 JSOI 2007 文本生成器 AC自动机+DP
- 大规模分布式存储系统-读书笔记-第一章
- android Scoket 网络对战DEMO
- Nginx配置文件详细说明