标签:
1.我们来简单了解一下CALayer的基本概念:
CALayer是核心动画的基础,可以做圆角、阴影、边框等效果 ;
每个UIView内部都有一个Layer的属性 ;
UIView可以响应事件,而CALayer只负责显示 ;
在实现核心动画时,本质上是将CALayer中的内容转换成位图,从而便于图形硬件的 操纵 ;
2.CALayer的坐标系统
UIView有frame、bounds和center三个属性
CALayer也有类似的属性,分别为frame、bounds、position、anchorPoint
3.锚点
anchorPoint的默认值为(0.5,0.5),也就是anchorPoint默认在layer的中心点。
position是layer中的anchorPoint在superLayer中的位置坐标。
frame.origin.x = position.x - anchorPoint.x * bounds.size.width;
frame.origin.y = position.y - anchorPoint.y * bounds.size.height;
4.CALayer的常用属性
背景颜色,内容,边框,阴影,透明度
5.提示
提示:
Layer的设计目的不是为了取代视图,因此不能基于CALayer创建一个独立的可视化 组件
Layer的设计目的是提供视图的基本可视内容,从而提高动画的执行效率
除提供可视内容外,Layer不负责视图的事件响应、内容绘制等工作,同时Layer不能 参与到响应者链条中
6.参考以下代码,可以更好的理解CALyer的一些基本属性和用法
- (void)viewDidLoad {
[super viewDidLoad];
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(20, 20, 200, 300)];
view.backgroundColor = [UIColor redColor];
[self.view addSubview:view];
//图层
//边框 (向view的内部扩展)
view.layer.borderWidth= 10;//默认是0
view.layer.borderColor = [UIColor greenColor].CGColor;
//圆角半径
view.layer.cornerRadius = 50;
//阴影
//阴影颜色 (默认黑色)
view.layer.shadowColor = [UIColor grayColor].CGColor;
//阴影偏移量 (默认是0 0)
view.layer.shadowOffset = CGSizeMake(-50, 50);
//阴影的不透明度 (默认是 0 透明)
view.layer.shadowOpacity = 1;
//内容
//__bridge: core Foundation对象(CF core text)[将cf对象的内存管理交给ARC处理]
view.layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"1.jpeg"].CGImage);
// //手动管理
// CGImageRef cgImage = [UIImage imageNamed:@"1.jpg"].CGImage;
// CGImageRelease(cgImage);
// 子视图超出的部分 不显示
// view.clipsToBounds = YES;
//超出layer的部分 不显示(将阴影裁掉)
view.layer.masksToBounds = YES;
}
标签:
原文地址:http://www.cnblogs.com/xiaodiandian/p/5774145.html