当前位置: 首页 > 知识库问答 >
问题:

如何停止在swift中重新设置动画?

娄森
2023-03-14

当我开始在uitextfield中输入时,我希望发生一些动画,在我完成输入之前,它不应该反转回来。我正在使用此代码设置动画:

func textFieldDidBeginEditing(textField: UITextField) {
    println("begin")
    UIView.animateWithDuration(1.0, animations:{
        self.secondTextfield.frame = CGRectMake(self.secondTextfield.frame.origin.x + 500, self.secondTextfield.frame.origin.y, self.secondTextfield.frame.size.width, self.venueTextField.frame.size.height)
    })
}

我想做的是:当我开始在第一个文本字段中键入时,我希望第二个文本字段从视图中隐藏,当我完成键入时,我希望它重新设置动画。

我的问题是:当我开始键入动画时,它会返回到原始位置。它不会等我完成打字。

共有2个答案

弓智明
2023-03-14

虽然不知道问题到底是什么,但我已经找到了解决问题的合理替代方案:

不要为帧设置动画,而是为定义文本字段x坐标的自动布局约束设置动画。例如,下面的图像由两个文本字段组成。当我开始在顶部键入时,我想设置底部的动画:

垂直约束是我要设置动画的中心x对齐。为了达到效果,我将一个IBMoutlet连接到我的NSLayoutConstraint:

我让我的视图控制器采用UITextFieldServer ate并实现了三种方法:

extension ViewController: UITextFieldDelegate {
  func textFieldDidBeginEditing(textField: UITextField) {
    self.c.constant += 100 //c is my constraint
    UIView.animateWithDuration(1.0) {
      self.view.layoutIfNeeded()
    }
  }

  func textFieldDidEndEditing(textField: UITextField) {
    println("textFieldDidEndEditing")
    self.c.constant -= 100
    UIView.animateWithDuration(1.0) {
      self.view.layoutIfNeeded()
    }
  }

  func textFieldShouldReturn(textField: UITextField) -> Bool {
    a.resignFirstResponder()
    return true
  }
}

这种方法需要一些自动布局的诀窍,但我能够达到您想要的效果。

鱼阳伯
2023-03-14
  1. 为什么不把alpha改为0,然后改变它的框架
  2. 您需要确定女巫文本字段正在编辑。
  3. 您需要处理text FieldddEndEdting以获取第二个text Field。

示例:

func textFieldDidBeginEditing(textField: UITextField) {
    if textField == firstTextField {
        UIView.animateWithDuration(1.0, animations:{
            self.secondTextfield.alpha = 0
        })
    }
}

func textFieldDidEndEditing(textField: UITextField) {
    if textField == firstTextField {
        UIView.animateWithDuration(1.0, animations:{
            self.secondTextfield.alpha = 1
        })
    }
}
 类似资料:
  • 问题内容: 我很难找到一种方法来启动,停止和重新启动Java中的线程。 具体来说,我在中有一个类Task(当前实现)。我的主应用程序需要能够在线程上启动此任务,在需要时停止(杀死)该线程,有时还可以杀死并重新启动该线程… 我的第一次尝试是与,但我似乎找不到办法重新启动任务。当我使用任何将来的呼叫失败时,因为是“关机” … 那么,我该怎么做呢? 问题答案: 一旦线程停止,你将无法重新启动它。但是,没

  • 问题内容: 如何停止块枚举? 我知道在obj-c中,您可以这样做: 问题答案: 在Swift 1中: 在Swift 2中: 在Swift 3-4中:

  • 问题内容: 我想制作一个UIImageView动画。我声明了NSLayoutConstraintin viewDidLoad并使用了以下代码: 为什么我的图像不动? 问题答案: 在您按下时viewDidLoad,约束引擎尚未 应用,并且视图的起始位置尚未建立。 因此,可以随时在中添加原始约束viewDidLoad,但是您 需要将推迟到animateWithDuration该过程的后面(例如 vie

  • 问题内容: 我使用以下命令从映像启动docker容器: 当完成后,容器停止(我想这已停止),但它并没有被删除,因为我可以用这个命令来查看它: 有什么办法可以使用相同的参数将此容器保持由生成的数据? 问题答案: 是的,当初始命令完成执行后,容器将停止。 您可以使用以下方法启动已停止的容器: 如果要查看命令的输出,则应添加选项: PS。有一个,但用于重新启动正在运行的容器-我相信情况并非如此。

  • 我想在我的项目中使用动画GIF,但我不知道如何停止循环动画。我的意思是,我希望GIF只能播放1次。 谢谢!

  • Triathlon程序执行一个长时间运行的任务,如果该任务已完全执行,则有可能重新启动该任务。我想添加停止执行以重置UI的可能性。为了达到这个目的,我增加了一个新的按钮,停止。代码如下: 如果任务已经完成,程序很好地重新启动,但是如果我在停止它之后调用start,程序就会崩溃。我该纠正什么?