我有这个奇怪的问题,我在我应用程序的初始视图控制器的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的调用(尽管没有解决问题)。