1

我有三个UITextField通过 setFrame: 方法制作动画的 s。动画本身效果很好,但是当用户触摸屏幕时,问题在动画之前就开始了。发生的情况是所有三个UITextFields 都消失了。

需要注意的一件事是,当我按下取消,然后按下重新实例化动画的按钮时,UITextFields 重新出现并且仍然具有用户先前输入的字符串。所以它们并没有真正消失……我想只是在视觉上消失了。

我得到的代码:

- (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: ...]. 不然我真的什么都想不出来哈哈。

有人有什么想法吗?

4

1 回答 1

1

您是否使用自动布局(iOS 6 的一项功能,它根据称为约束的算术规则控制控件的放置)?要查看是否启用了自动布局,请打开故事板/NIB,按option+ command-1转到“文件检查器”(或只需单击最右侧面板上的“文件检查器”选项卡)并查看“自动布局”是否被选中或不是。

如果启用自动布局,即使在更改帧之后,也会重新应用约束,并且控件将移回约束指定的位置。您可以关闭自动布局,或者保持自动布局打开,然后以编程方式删除约束或以编程方式更改约束而不是更改框架。

有关如何通过更改约束来制作动画的示例,请参见此答案。

于 2013-01-21T05:18:24.937 回答