没有UIVIEW动画,我正在学习核心动画

当我运行此代码时,top图像不在屏幕上。然后4秒钟后,它重新出现并按预期运行。不知道为什么。我想要的是在应用启动时将top图像显示在屏幕上,然后4秒钟后让top图像向上移动并移出屏幕。

    @IBOutlet var top: UIImageView!

    override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    let openTop = CABasicAnimation(keyPath: "position.y")
    openTop.fromValue = self.top.frame.origin.y
    openTop.toValue = -self.view.bounds.size.height
    openTop.duration = 1.0
    openTop.beginTime = CACurrentMediaTime() + 4
    self.top.layer.addAnimation(openTop, forKey: nil)
    self.top.layer.position.y = -self.view.bounds.size.height

}

有什么想法吗?

最佳答案

这是我想出的:

let l = top.layer!
let startingPosition = l.position
l.position = CGPointMake( CGRectGetMidX( self.view.bounds ), -l.frame.height * 0.5 )

l.addAnimation({
    let anim = CABasicAnimation( keyPath: "position" )
    anim.fromValue = NSValue( CGPoint:startingPosition )
    anim.beginTime = CACurrentMediaTime() + 4.0
    anim.fillMode = kCAFillModeBoth
    return anim
}(), forKey: nil)

07-28 03:01
查看更多