我正在调用API。根据我得到的json数据,我在viewDidLoad()
中调整我的视图控制器,以便更改我的视图设计,以便尽可能地显示给定数据。
我所做的是隐藏一些uiView并将其约束设置为.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%确定差异
提前致谢,
答案 0 :(得分:3)
我会打电话给view.setNeedsUpdateConstraints()
。在viewDidLoad()
之后,应自动调用viewWillLayoutSubviews()
。这应该就是你现在需要做的一切。
如果您需要强制视图立即更新,请致电view.layoutIfNeeded()
,如果您想要进行一组更改,然后在下一个布局过程中全部应用这些更改,请在结束时调用view.setNeedsLayout()
你所有的改变。