一、CALayer基础
2018-01-26 本文已影响10人
faterman
在iOS系统中构建用户图形界面的内容一般都是UIView,比如按钮,文本标签,文本输入框,一个图标,这些其实都是UIView对应的子类。UIView之所以能显示在屏幕上,是因为内部有一个layer。iOS系统是以层为基本单位向屏幕来进行绘制的。
在创建UIView对象的时候,UIView内部会自动创建一个层(CALayer对象,可称之为root layer),通过UIView的layer属性可以访问到这个层。当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有的内容绘制到自己的层上,绘图完毕后,系统会将层拷贝到屏幕上,最终完成UIView的显示。
Layer基本使用
1.设置阴影
imageView.layer.shadowColor = [UIColor grayColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(10, 10);
imageView.layer.shadowOpacity = 0.5;
shadowColor代表了层阴影的颜色。
shaowOffset代表了层阴影的偏移量,当前这种设置方式会向右下角偏移。
shaowOpcity代表了阴影的透明度,此处设置为半透明
阴影的绘制是在原来基础向外的
2.设置圆角
imageView.layer.cornerRadius = 10;
imageView.layer.masksToBounds = YES;
第一行设置的是圆角半径
第二行是内容根据外层mask,来显示
如果设置了masksToBounds = YES,此时阴影效果就不会出现了
3.设置边框和颜色
imageView.layer.borderWidth = 5;
imageView.layer.borderColor = [UIColor redColor].CGColor;
第一行设置边框宽度是5
第二行设置边框颜色为红色
边框绘制是向内绘制的
4.设置旋转
imageView.layer.transform = CATransform3DMakeRotation(M_PI_4, 0, 0, 1);
M_PI_4 表示旋转45度
后面的(0,0,1)表示这是个z轴向量
创建Layer
UIView及其子类在创建时会有一个layer,这个默认的层是不允许重新创建的,但是可以在这个层上添加子层。
1.添加一个Layer
_myLayer = [CALayer layer];
// 设置层的宽度和高度(100x100)
_myLayer.bounds = CGRectMake(0, 0, 100, 100);
// 设置层的位置
_myLayer.position = CGPointMake(100, 100);
// 设置层的背景颜色:红色
_myLayer.backgroundColor = [UIColor redColor].CGColor;
// 设置层的圆角半径为10
_myLayer.cornerRadius = 10;
// 添加myLayer到控制器的view的layer中
[self.view.layer addSublayer:_myLayer];
2.创建一个显示图片的图层
_myLayer = [CALayer layer];
// 设置层的宽度和高度(100x100)
_myLayer.bounds = CGRectMake(0, 0, 100, 100);
// 设置层的位置
_myLayer.position = CGPointMake(100, 100);
// 设置层的背景颜色:红色
_myLayer.backgroundColor = [UIColor redColor].CGColor;
// 设置层的圆角半径为10
_myLayer.cornerRadius = 10;
_myLayer.contents = (id)[UIImage imageNamed:@"test.png"].CGImage;
[self.view.layer addSublayer:_myLayer];