如何在Swift中为NSLayoutConstraint设置动画?

我想制作一个UIImageView动画。我声明了NSLayoutConstraintin

viewDidLoad并使用了以下代码:

UIView.animate(withDuration: 1) {

myConstraint.constant = 100

self.view.layoutIfNeeded()

}

为什么我的图像不动?

回答:

在您按下时viewDidLoad,约束引擎尚未

应用,并且视图的起始位置尚未建立。

因此,可以随时在中添加原始约束viewDidLoad,但是您

需要将推迟到animateWithDuration该过程的后面(例如

viewDidAppear)。

例如,假设您在InterfaceBuilder(IB)中添加了一些约束。您可以通过以下方式添加@IBOutlet对它的control引用:从InterfaceBuilder 左面板的文档大纲中的约束向下拖动到助手编辑器

现在,您已经有了对该约束的引用,现在可以以编程方式更改该constant约束的值(但是,如果要在显示 视图时看到此动画,请再次在viewDidAppear而不是中viewDidLoad进行此操作):

@IBOutlet weak var topConstraint: NSLayoutConstraint!

override func viewDidAppear(animated: Bool) {

super.viewDidAppear(animated)

topConstraint.constant = 100

UIView.animate(withDuration: 2) {

self.view.layoutIfNeeded()

}

}

对约束的引用,然后viewDidAppear更新constant,然后对进行动画处理即可layoutIfNeeded()。

以上是 如何在Swift中为NSLayoutConstraint设置动画? 的全部内容, 来源链接: utcz.com/qa/415280.html

回到顶部