關(guān)鍵函數(shù)如下
func expand() {
var expandAnimation: CABasicAnimation = CABasicAnimation(keyPath: "path")
expandAnimation.fromValue = ovalPathSmall.CGPath
expandAnimation.toValue = ovalPathLarge.CGPath
expandAnimation.duration = animationDuration
expandAnimation.fillMode = kCAFillModeForwards
expandAnimation.removedOnCompletion = false
addAnimation(expandAnimation, forKey: nil)
}
關(guān)鍵代碼解釋:ovalPathSmall和ovalPathLarge如下:
var ovalPathSmall: UIBezierPath {
return UIBezierPath(ovalInRect: CGRect(x: 50.0, y: 50.0, width: 0.0, height: 0.0))
}
var ovalPathLarge: UIBezierPath {
return UIBezierPath(ovalInRect: CGRect(x: 2.5, y: 2.5, width: 95.0, height: 95.0))
}
ovalPathSmall其實畫的是一個點,ovalPathLarge才是變大后的這個原(直徑95),圓心其實就位于ovalPathSmall所畫的這個點上
expandAnimation.fillMode = kCAFillModeForwards
expandAnimation.removedOnCompletion = false
確保動畫完成以后確保圓為變化后的大圓圖形。
簡單來說,動畫就是給定變化前后的圖形,變化交給系統(tǒng)來實現(xiàn)。