2016-08-13 63 views
1

我正在嘗試動畫,而且我正面臨一個大問題:當我的動畫完成並且執行某些操作(觸摸屏幕等)時,元素將其位置重置爲他們的第一位。 我發現這個:[博客]:Animation Blocks resets to original position after updating text 他們說這是因爲元素有約束或自動佈局,所以關掉它來修復它,但我不想關閉它。 我們可以通過編程更新約束嗎? 還有其他解決方案嗎?動畫:停止元素的重置位置(快速)

這裏是我的動畫:

@IBOutlet var tfUser: UITextfiled! 

override func viewDidLoad() { 
    super.viewDidLoad() 

} 

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
tfUser.center.x += view.bounds.width 
} 


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

    UIView.animateWithDuration(2, delay: 1.8, options: [.CurveEaseInOut], animations: { 
     self.tfUser.center.x += self.view.bounds.width 
     //self.tfUser.frame = CGRectMake(0, 233, 375 , 89) 
     // i tried CGRectMake but it delete the animation 
     }, completion: nil) 
} 
+0

使用UIView的translatesAutoresizingMaskIntoConstraints屬性。像這樣'self.tfUser.translatesAutoresizingMaskIntoConstraints = false;' –

+0

非常感謝你,它的工作! – Matt

回答

0

在我的問題的評論,@Hardik Shekhat告知使用:

self.tfUser.translatesAutoresizingMaskIntoConstraints = true 

它爲我的作品!