应用程序启动后立即UIView.animateWithDuration

时间:2015-09-20 13:56:28

标签: ios swift animation uiview uiviewanimation

我有这个奇怪的问题,我在我应用程序的初始视图控制器的viewDidAppear中调用了UIView.animateWithDuration,但是动画似乎跳了(它在中途某处可见)。我找到的唯一解决方法是在开始动画之前添加延迟。我很想知道为什么会发生这种情况,以及是否有比延迟更好的解决方案。

要自己尝试,创建一个视图应用程序,然后在ViewController.swift中添加以下方法(Xcode调试器稍微减慢应用程序,模拟真实条件,停止并从设备或模拟器启动应用程序):< / p>

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

    let redSquare = UIView(frame: CGRectMake(0, 0, 50, 50))
    redSquare.backgroundColor = UIColor.redColor()
    redSquare.center = view.center

    view.addSubview(redSquare)

    UIView.animateWithDuration(0.5) { () -> Void in
        var newFrame = redSquare.frame
        newFrame.origin.y -= 200
        redSquare.frame = newFrame
    }
}

红色方块应该从屏幕中心开始转换到顶部的某个位置,但它好像动画开始但应用程序尚未准备好显示它,所以你看到红色正方形在中心上方开始翻译。

编辑:在示例中添加了对viewDidAppear的调用(尽管没有解决问题)。

0 个答案:

没有答案