簡單三步實現UIButton水波紋效果——swift
阿新 • • 發佈:2019-01-10
self.setNeedsDisplay()//會呼叫自動呼叫drawRect方法,這樣可以拿到UIGraphicsGetCurrentContext,就可以畫畫了
let index:Int = timer.userInfo! as! Int
let buttonCircle: LYButtonCircle = circles[index]!
//circleRait:半徑縮放係數,circleRait若等於1則圓達到最大半徑,字典中刪除點選事件,結束定時任務
if buttonCircle.circleRait <= 1 {
buttonCircle.circleRait += 1.0/CGFloat(self.loopCount)
} else {
circles.removeValue(forKey: index)
timer.invalidate()
}
}
override func draw(_ rect: CGRect) {
let context: CGContext = UIGraphicsGetCurrentContext()!
let endAngel = CGFloat(Double.pi * 2)
for buttonCircle: LYButtonCircle in circles.values {
//畫圓
context.addArc(center: CGPoint(x: buttonCircle.circleCenterX, y: buttonCircle.circleCenterY), radius: buttonCircle.circleRait*buttonCircle.circleWidth, startAngle:0, endAngle: endAngel, clockwise: false)
self.hightLightColor.withAlphaComponent(1-buttonCircle.circleRait).setStroke()
self.hightLightColor.withAlphaComponent(1-buttonCircle.circleRait).setFill()
context.fillPath()
}
}