2018-07-31 CALayer 使用
今天主要是讲CALayer的两个子类:CASharpLayer和CAGradientLayer。
CASharpLayer
主要用于绘制各种图形。虽然也可以使用重写 view 的 drawRect方法,利用图形上下文进行绘制。但CASharpLayer绘制图形内存消耗更小,推荐使用。CASharpLayer 本身没有任何形状,它的形状来自于其属性path。所以,结合UIBezierPath 可以绘制各种形状。
简单的demo,通过UIBezierPath 画圆环。
let center:CGPoint = self.view.center
let layer : CAShapeLayer = CAShapeLayer()
layer.fillColor = UIColor.clear.cgColor
layer.lineWidth= width
layer.strokeColor= strokColor
let path:UIBezierPath=UIBezierPath(arcCenter : center, radius: 20, startAngle: 0, endAngle: .pi*2, clockwise:true);
layer.path= path.cgPath
self.view.layer.insertSubLayer(layer)
实际开发中,可以通过UIBezierPath画圆、椭圆、矩形、多边形、直线、虚线、扇形等各式各样的形状。
CAGradientLayer
这个类,可以让你轻松实现view渐变的效果。直接上代码:
let colorArray:[CGColor] = [
UIColor(red: 16/255.0, green: 69/255.0, blue: 150/255.0, alpha: 1).cgColor,
UIColor(red: 0/255.0, green: 29/255.0, blue: 78/255.0, alpha: 1).cgColor
]//渐变的颜色数组
let gradientLocations:[NSNumber] = [0.0, 1.0]//从上到下进行渐变
let gradientLayer =CAGradientLayer()
gradientLayer.colors= colorArray
gradientLayer.locations= gradientLocations
gradientLayer.frame=view.frame
gradientLayer.masksToBounds=true;
gradientLayer.cornerRadius=view.frame.size.height/2;
view.layer.insertSublayer(gradientLayer, at: 0)//加入Layer层中