Layers是Core Animation Framework的一部分。Core Animation Framework在iOS架构的位置:
访问CALayer
凡是继承至UIView
的都将有一个属性layer
来表示CALayer
。myView.layer
初始化项目
- 新建CALayerDemo,single View Application模板
- 新建一个
UIView
和一个UILabel
圆角
CALayer
的cornerRadius
属性大小表示UIView
圆角处圆的半径大小。类似于box.layer.cornerRadius = 20
,就形成了圆角,数字越大圆角效果越大,当cornerRadius
等于box
半径时,box
就会变成一个园。
阴影效果
1 | box.layer.shadowOffset = CGSize(width: 5, height: 5) |
shadowOffset
表示阴影偏移大小,也就是阴影向box
的下放偏移5和向右方偏移5距离。shadowOpacity
是阴影透明度shadowRadius
是阴影涉及的半径,并且这个半径越大,阴影的颜色深浅就会越来越小。shadowRadius
与shadowOffset
是共同作用的
设置边的宽度和颜色
1 | box.layer.borderColor = UIColor.black.cgColor |
展示图片
1 | box.layer.contents = UIImage(named: "tree.jpg")?.cgImage |
CALayer
的contents
属性是open var contents: Any?
,可以设置为图片contentsGravity
设置成kCAGravityResize
,表示contents
的内容会调整大小以适应layer。如果设置成其他值可能出现大小不适的形象,比如kCAGravityBottomRight
,将是:
masksToBounds
为true表示按照layer的边框范围显示内容;如果是false,将会是如下结果
背景颜色和透明度
1 | box.layer.backgroundColor = UIColor.green.cgColor |