gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 05:24:41 24 4
gpt4 key购买 nike

我想为 UIImageView 制作动画。我在 viewDidLoad 中声明了一个 NSLayoutConstraint 并使用了这段代码:

UIView.animate(withDuration: 1) {
myConstraint.constant = 100
self.view.layoutIfNeeded()
}

为什么我的图像不动?

最佳答案

当您点击 viewDidLoad 时,约束引擎尚未应用, View 的起始位置尚未确定。因此,请随意在 viewDidLoad 中添加原始约束,但您会希望将 animateWithDuration 推迟到过程的后期(例如 viewDidAppear) .


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

enter image description here

既然您已经引用了该约束,您现在可以通过编程方式更改该约束的 constant 值(但是,同样,在 viewDidAppear 中执行此操作,而不是 viewDidLoad,如果你想在呈现 View 时看到这个动画):

@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()

关于ios - 如何在 Swift 中为 NSLayoutConstraint 设置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28329042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com