我正在调用 API。根据我返回的 json 数据,我在 viewDidLoad()
中修改我的 View Controller ,以便更改我的 View 设计以尽可能以最佳方式显示给定数据。
我所做的是隐藏一些 uiViews 并将它们的约束设置为 .active = false 但也通过例如更改一些约束:
let noCButton = NSLayoutConstraint(item: aListTop, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: aListBottom, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0)
view.addConstraint(noBidButton)
然后在关闭 viewDidLoad() 之前,我更改/禁用一些约束,我调用 view.layoutIfNeeded()
所以我现在的问题是,
如果我更改/禁用某些约束或隐藏 uiview,我是否应该随后调用 view.layoutIfNeeded()
?
另外,我是否需要在每次更改后立即调用 view.layoutIfNeeded()
或者我可以在关闭 viewDidLoad() 之前简单地调用它一次吗?
无论哪种方式,我的控制台都没有出现任何错误,但我只是想确保我以正确的方式进行操作。我还注意到像 updateConstraints
这样的函数,但 layoutIfNeeded 似乎可以工作,但我不能 100% 确定其中的差异
提前致谢,
最佳答案
我会调用view.setNeedsUpdateConstraints()
。在 viewDidLoad()
之后,应自动调用 viewWillLayoutSubviews()
。这应该是您此时需要做的全部事情。
如果您需要强制 View 立即更新,请调用 view.layoutIfNeeded()
,如果您想进行一组更改,然后将它们全部应用到下一个布局过程中,只需调用 view.setNeedsLayout()
在所有更改的末尾。
关于ios - swift 不确定layoutIfNeeded setNeedsUpdateConstraints或updateConstraints setNeedsLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31548885/