ios - swift 不确定layoutIfNeeded setNeedsUpdateConstraints或updateConstraints setNeedsLayout

标签 ios swift

我正在调用 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/

相关文章:

ios - Swift 3 - 可扩展表格 View 单元格而不关闭其他单元格

ios - Xcode 中导入的资源非常庞大

macos - 在 Swift 中使用核心数据时出现错误的访问信号

ios - 需要用按钮 Swift 生成的 Int 更改 UIImageView

ios - 使用 json 填充的单元格准备segue

ios - 是否可以将分段控件标题设置为左对齐?

swift - 访问 XCUIElement 中的最后一个元素

ios - 阴影不在 UIButtons 上绘制

ios - 通过 dispatch_async 获取图像数据后刷新 UITableViewCell

objective-c - 如果表格 View 为空则显示标签