gpt4 book ai didi

ios - layoutIfNeeded 是如何使用的?

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

何时以及如何使用 layoutIfNeeded?我知道当我们更改 View 的布局时,我们可以调用 setNeedsLayout 来更新布局,但不确定何时应该使用 layoutIfNeeded

注意:我在实际代码中使用了 layoutIfNeeded,但忘记了它是在什么上下文中使用的。

最佳答案

layoutIfNeeded 强制接收器在需要时立即布局其 subview 。

假设您已经覆盖了 layoutSubviews,并且 UIKit 认为您的 View 出于某种原因需要布局(例如,您在处理某些用户操作时调用了 setNeedsLayout)。然后,您的自定义 layoutSubviews 方法将立即被调用,而不是在常规 UIKit 运行循环事件序列中通常被调用的时候(在事件处理之后,但在 drawRect: 之前) .

您可能需要在单个运行循环中调用 layoutIfNeeded 的示例:

  1. 您调整了一个自定义 View 的大小,其中包含一个具有自定义布局的表格 View 。 setNeedsLayout 已设置,以便稍后调用 layoutSubviews
  2. Controller 对象要求 TableView 在处理用户事件时滚动到某个特定的单元格。
  3. 您的自定义 View 在 layoutSubviews 中执行一些自定义的 TableView 大小调整,从而更改 TableView 大小。

问题是当 Controller 要求 TableView 滚动时(第 2 步), TableView 的边界是陈旧的。更新后的边界只会在稍后设置在 TableView 上(第 3 步)。 layoutSubviews 完成后, Controller 希望 TableView 滚动到的内容可能实际上不可见。一个解决方案是让 Controller 在它知道这可能发生的情况下调用 layoutIfNeeded

关于ios - layoutIfNeeded 是如何使用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1182945/

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