我有三个 UITextField
,我通过 setFrame: 方法在其中设置了动画。动画本身效果很好,但是当用户在屏幕上进行触摸时,问题出现在动画之前。发生的情况是所有三个 UITextField
都消失了。
需要注意的一件事是,当我按下取消,然后按下重新实例化动画的按钮时,UITextField
重新出现并且仍然具有用户先前输入的字符串.所以它们并不是真的消失了……我想只是视觉上消失了。
我得到的代码:
- (IBAction)signupPressed:(UIButton *)sender
{
self.isSigningUp = YES;
[UIView animateWithDuration:0.3f
delay:0.0f
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.krtiqueButton.alpha = 0.0f;
self.krtiqueButton.enabled = NO;
self.facebookButton.alpha = 0.0f;
self.facebookButton.enabled = NO;
} completion:^(BOOL finished){
if (finished) {
[self animateSignUpCredentials];
}
}];
}
- (void)animateSignUpCredentials
{
[UIView animateWithDuration:0.3f
delay:0.0f
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.fullnameTextField.frame = CGRectMake(20, 59, 280, 30);
self.emailTextField.frame = CGRectMake(20, 97, 280, 30);
self.passwordTextField.frame = CGRectMake(20, 135, 280, 30);
self.continueButton.alpha = 1.0f;
} completion:nil];
}
我已经尝试改变 setFrame: 的调用方式,将其从 setFrame 更改为 [self.fullnameTextField sefFrame: ...]
。不然真的想不出来哈哈。
有人有什么想法吗?
最佳答案
您是否在使用自动布局(iOS 6 的一项功能,可根据称为约束的算术规则控制控件的放置)?要查看您是否启用了自动布局,请打开 Storyboard/NIB,按 option+command-1 转到“文件检查器”(或者只需单击最右侧面板上的“文件检查器”选项卡)并查看“自动布局”是否被选中。
如果启用了自动布局,即使在更改框架之后,也会重新应用约束,并且控件将移回约束指定的位置。您可以关闭自动布局,或保持自动布局打开,并以编程方式删除约束或以编程方式更改约束而不是更改框架。
查看此 answer有关如何通过更改约束来制作动画的示例。
关于iphone - UITextField 动画完成,但在用户触摸后又弹回到原来的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14432574/