美文网首页
2018-07-31 CALayer 使用

2018-07-31 CALayer 使用

作者: 北你妹的风 | 来源:发表于2018-07-31 19:16 被阅读10次

今天主要是讲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层中

相关文章

网友评论

      本文标题:2018-07-31 CALayer 使用

      本文链接:https://www.haomeiwen.com/subject/ezzhvftx.html