UIView.animateWithDuration 越界

UIView.animateWithDuration going out of the bounds

我正在尝试制作一些 textfield 的动画。即在屏幕外开始动画并移动到屏幕中央。但在我的例子中,动画从中心开始并从 bounds 出去。当我在 viewWillAppear/viewDidAppear 中声明时会发生这种情况,但在 viewDidLoad 中一切正常/

override func viewWillAppear(animated: Bool) {
    emailField.center.x -= view.bounds.width
}

override func viewDidAppear(animated: Bool) {

    UIView.animateWithDuration(0.5, delay: 0.4, options: [], animations: {
        self.emailField.center.x += self.view.bounds.width
        }, completion: nil)

}

您可以尝试为变换设置动画 属性。

override func viewWillAppear(animated: Bool) {
    emailField.transform = CGAffineTransformMakeTranslation(-view.bounds.width, 0.0)
}

override func viewDidAppear(animated: Bool) {
    UIView.animateWithDuration(0.5, delay: 0.4, options: [], animations: {
        self.emailField.transform = CGAffineTransformIdentity
    }, completion: nil)
}