import UIKit
@IBDesignable
class RTShapLayerView: UIView {
var timer: Timer!
var shapeLayer: CAShapeLayer!
var mdowntime = 101
required init?(coder aDecoder: NSCoder) {
super .init(coder: aDecoder)
creatUI()
}
override init(frame: CGRect) {
super.init(frame: frame)
creatUI()
}
func creatUI() {
shapeLayer = CAShapeLayer()
self.layer.addSublayer(shapeLayer)
let onePath = UIBezierPath(arcCenter: CGPoint(x: self.bounds.height/2, y: self.bounds.width/2), radius: self.bounds.width/2, startAngle: CGFloat(Double.pi*3/2), endAngle: CGFloat(Double.pi*2+Double.pi*3/2), clockwise: true)
shapeLayer.path = onePath.cgPath
shapeLayer.lineWidth = 2
shapeLayer.strokeStart = 0
shapeLayer.strokeEnd = 0
shapeLayer.fillColor = UIColor.clear.cgColor
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.animate), userInfo: nil, repeats: true)
}
@objc func animate() {
shapeLayer.strokeColor = UIColor.colorWithHex("#6691f7").cgColor
if mdowntime == 1 {
timer.invalidate()
timer = nil
mdowntime = 100
}else{
self.shapeLayer.strokeEnd += 0.01
mdowntime -= 1
}
}
}
使用方法继承自定义的View即可