2
我試圖在此函數中使用CAKeyframeAnimation
沿着UIBezierPath
移動UIImageView
。目前它根本不動。我知道路徑創建是正確的,因爲我正在繪製它來檢查它,並且它是我想要的形狀中的一個很好的弧。使用CAKeyframeAnimation沿UIBezierPath移動UIImageView不會執行任何操作
代碼:
func animateSun() {
let sunImageView = UIImageView(image: UIImage(named: "Sun"))
sunImageView.sizeToFit()
let sunAnimationPath = UIBezierPath()
let pathStart = CGPoint(x: (sunImageView.frame.width/2), y: self.view.frame.height - (self.rearMountainView.frame.height/2) + sunImageView.frame.height)
let pathEnd = CGPoint(x: self.view.frame.width - (sunImageView.frame.width/2), y: self.view.frame.height - (self.rearMountainView.frame.height/2) + (sunImageView.frame.height))
sunAnimationPath.moveToPoint(pathStart)
let controlOne = CGPoint(x: pathStart.x, y: pathStart.y - 500)
let controlTwo = CGPoint(x: pathEnd.x, y: pathEnd.y - 500)
sunAnimationPath.addCurveToPoint(pathEnd, controlPoint1: controlOne, controlPoint2: controlTwo)
sunImageView.frame = CGRectMake(pathStart.x - (sunImageView.frame.width/2), pathStart.y - (sunImageView.frame.height/2), sunImageView.frame.width, sunImageView.frame.height)
let animation = CAKeyframeAnimation(keyPath: "day")
animation.duration = 15
animation.repeatCount = 0
animation.path = sunAnimationPath.CGPath
animation.calculationMode = kCAAnimationPaced
animation.fillMode = kCAFillModeForwards
animation.removedOnCompletion = false
sunImageView.layer.addAnimation(animation, forKey: "day")
self.view.addSubview(sunImageView)
//self.view.sendSubviewToBack(sunImageView)
let layer = CAShapeLayer()
layer.path = sunAnimationPath.CGPath
layer.strokeColor = UIColor.blackColor().CGColor
layer.lineWidth = 1.0
layer.fillColor = nil
self.view.layer.addSublayer(layer)
}