zoukankan      html  css  js  c++  java
  • iOS 百分比圆环曲线swift4.0实现

    import UIKit

    class XZCircleView: UIView {

        let backGroundLayer = CAShapeLayer.init()///背景白色细曲线

        let progressLayer = CAShapeLayer.init()///进度真是数值曲线

        var endVale = 0.00

        var progressColor = UIColor.white.cgColor

        var backColor = "FFFFFF".toUiColorWithAlpha(0.2).cgColor

        

        

        // Only override draw() if you perform custom drawing.

        // An empty implementation adversely affects performance during animation.

        override func draw(_ rect: CGRect) {

            // Drawing code

            self.initTheView(rect)

        }

        func initTheView(_ rect : CGRect) {

            

            // 设置百分比动画显示

    //设置白色背景线

            self.backGroundLayer.frame = rect

            

            self.backGroundLayer.fillColor = UIColor.clear.cgColor

            self.backGroundLayer.lineWidth = 1

            let backPath = UIBezierPath.init(arcCenter: CGPoint.init(x: self.p_centerX, y: self.p_centerY), radius: self.frame.size.width / 2.00, startAngle: CGFloat(-Double.pi * 7.0 / 6.0 ), endAngle: CGFloat(Double.pi / 6.0), clockwise: true)

            

            self.backGroundLayer.path = backPath.cgPath

            self.backGroundLayer.strokeStart = 0

            self.backGroundLayer.strokeEnd = 1

            self.backGroundLayer.strokeColor = backColor

            self.layer.addSublayer(self.backGroundLayer)

            

            

            self.backGroundLayer.fillColor = UIColor.clear.cgColor

            self.backGroundLayer.lineWidth = 1

    //设置真实进度曲线

            self.progressLayer.frame = rect

            self.progressLayer.fillColor = UIColor.clear.cgColor

            self.progressLayer.lineWidth = 12

            self.progressLayer.lineCap = kCALineCapRound

            

            let progressPath = UIBezierPath.init(arcCenter: CGPoint.init(x: self.p_centerX, y: self.p_centerY), radius: self.frame.size.width / 2.00, startAngle: CGFloat(-Double.pi * 7.0 / 6.0 ), endAngle: CGFloat(endVale), clockwise: true)

            self.progressLayer.path = progressPath.cgPath

            self.progressLayer.strokeStart = 0

            self.progressLayer.strokeEnd = 1

            self.progressLayer.strokeColor = progressColor

            self.layer.addSublayer(self.progressLayer)

    //添加动画

            let pathAnimation = CABasicAnimation.init(keyPath: "strokeEnd")

            pathAnimation.duration = 0.5

            pathAnimation.fromValue = 0

            pathAnimation.toValue = 1

            pathAnimation.timingFunction = CAMediaTimingFunction.init(name: kCAMediaTimingFunctionEaseOut)

            self.progressLayer.add(pathAnimation, forKey: "strokeEnd")

        }

    }

  • 相关阅读:
    学习计划 23月
    bash学习笔记
    bash 中 while读取文件并通过 ssh执行命令出现的问题及解决方法
    bash 学习笔记2
    fedora 启动 openssh
    lesson5 键盘的应用
    第十三章 int指令
    第十五章 外中断
    第十二章 内中断
    第十四章 端口
  • 原文地址:https://www.cnblogs.com/qizhuo/p/8665161.html
Copyright © 2011-2022 走看看