【发布时间】:2016-08-13 11:07:06
【问题描述】:
我正在尝试动画,但我遇到了一个大问题:当我的动画完成并且我做某事(触摸屏幕等)时,元素会将它们的位置重置为它们的第一个位置。 我发现了这个:[博客]: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)
}
【问题讨论】:
-
使用 UIView 的 translatesAutoresizingMaskIntoConstraints 属性。像这样
self.tfUser.translatesAutoresizingMaskIntoConstraints = false; -
非常感谢,成功了!!