如何在uitextfields上制作动画,开始在swift

时间:2015-07-28 07:38:48

标签: ios swift uitextfield uianimation

当FirstTextfield成为FirstRirstResponder时,我想在secondTextField上执行一些动画

在第一个响应者辞职后,动画应该在第二个文本字段中反转。我怎样才能在swift中实现这一目标?

注意:它与将键盘上的文本字段移动到顶部不同。

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
        if(textField == firstTextField) {
    UIView.animateWithDuration(1.0, animations: {
        self.secTextField.frame = CGRectMake(self.secTextField.frame.origin.x + 500, self.secTextField.frame.origin.y, self.secTextField.frame.size.width, self.secTextField.frame.size.height) })
    }
    return true
}

我想要做的是,当用户键入firstTextField时,secTextField应该隐藏在视线之外。 实际发生的事情是secTextField从看不到原来的位置

3 个答案:

答案 0 :(得分:1)

您可以使用UITextField的委托方法来实现此目的。如果您解释有关动画的更多信息,我也可以帮助您。

func textFieldDidBeginEditing(textField: UITextField) {

    if textField == self.firstTextField {
        UIView.animateWithDuration(2, delay: 0, options: nil, animations: { () -> Void in
            self.secondTextField.frame = CGRectOffset(self.secondTextField.frame, 500, 0)
            }, completion: nil)
    }
}

func textFieldShouldReturn(textField: UITextField) -> Bool {

    if textField == self.firstTextField {
        UIView.animateWithDuration(2, delay: 0, options: nil, animations: { () -> Void in
            self.secondTextField.frame = CGRectOffset(self.secondTextField.frame, -500, 0)
            }, completion: nil)
    }
    textField.resignFirstResponder()
    return true
}

不要忘记在UITextField对象上设置委托(在viewDidLoad上)

self.firstTextField.delegate = self
self.secondTextField.delegate = self

您可以从此处下载示例:https://github.com/alextarrago/text-field-test

答案 1 :(得分:0)

我终于找到了答案。 我做了以下步骤。

  1. 清理我的项目,
  2. 启用,然后再次停用自动布局。
  3. 在xib和swift文件中设置这些文本字段的委托。
  4. 然后编码:

         `self.secTextField.frame.origin.x = self.secTextField.frame.origin.x + 500`
    

答案 2 :(得分:0)

就我而言,它对我有用。只需使用self.view.layoutIfNeeded()

即可
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
    if(textField == firstTextField) {
        UIView.animateWithDuration(1.0, animations: {
            self.secTextField.frame = CGRectMake(self.secTextField.frame.origin.x + 500, self.secTextField.frame.origin.y, self.secTextField.frame.size.width, self.secTextField.frame.size.height)
            self.view.layoutIfNeeded()
        })
    }
    return true
}