运行 动画后文本字段 Returns 到原始位置
Text Field Returns to Original Location after Running Animation
我正在尝试在按下按钮时向右移动文本字段。它工作正常,但是当我单击另一个文本字段或任何其他元素时,文本字段会重新出现在其当前位置。我浏览了互联网,发现当我没有启用自动布局时它可以工作,但是我需要自动布局来设置可变位置。有什么建议吗?下面是移动盒子的方法:
- (IBAction)EnterInfo:(id)sender {
CGRect newFrame = _UsernameField.frame;
newFrame.origin.x += 500; // shift right by 500pts
[UIView animateWithDuration:1.0
animations:^{
_UsernameField.frame = newFrame;
}];
}
最后一个问题的新代码:
- (IBAction)EnterInfo:(id)sender {
[UIView animateWithDuration:1.0
animations:^{
_usernameX.constant = 130;
}];
}
如果你打开了自动布局,你就不能那样操作框架。您需要引用 NSLayoutConstraint
并更新常量。
像这样:
myXConstraint.constant = originalX + 500;
编辑 -- 然后您的动画块应该如下所示:
[UIView animateWithDuration:0.5 animations:^{
[self.view layoutIfNeeded];
}];
我正在尝试在按下按钮时向右移动文本字段。它工作正常,但是当我单击另一个文本字段或任何其他元素时,文本字段会重新出现在其当前位置。我浏览了互联网,发现当我没有启用自动布局时它可以工作,但是我需要自动布局来设置可变位置。有什么建议吗?下面是移动盒子的方法:
- (IBAction)EnterInfo:(id)sender {
CGRect newFrame = _UsernameField.frame;
newFrame.origin.x += 500; // shift right by 500pts
[UIView animateWithDuration:1.0
animations:^{
_UsernameField.frame = newFrame;
}];
}
最后一个问题的新代码:
- (IBAction)EnterInfo:(id)sender {
[UIView animateWithDuration:1.0
animations:^{
_usernameX.constant = 130;
}];
}
如果你打开了自动布局,你就不能那样操作框架。您需要引用 NSLayoutConstraint
并更新常量。
像这样:
myXConstraint.constant = originalX + 500;
编辑 -- 然后您的动画块应该如下所示:
[UIView animateWithDuration:0.5 animations:^{
[self.view layoutIfNeeded];
}];