ios - Swift - 在 vi​​ewWillTransition() 期间未调用 TextView layoutSubviews()

标签 ios swift landscape-portrait layoutsubviews

有谁知道为什么将设备旋转到纵向模式时不调用 UITextView.layoutSubviews() ?

当旋转到横向模式时,这些被称为:

  • UIViewController.viewWillTransition
  • UIViewController.viewDidLayoutSubviews
  • UITextView.layoutSubviews
  • UILabel.layoutSubviews

但是当旋转回纵向时,会调用 UILabel.layoutSubviews(),而不是 UITextView.layoutSubviews。这是一个空项目,除了这些方法中的跟踪之外没有其他代码。

最佳答案

layoutSubviews 通常在上一次运行循环调用中调用 setNeedsLayout() 时调用。

如果布局系统认为不需要调用,则不会调用。

理想情况下,您不应覆盖此函数。您应该在进行 superview 更改后调用 setNeedsLayout(),并让布局系统调用此函数的默认实现。此外,您应该在自动布局中定义 subview 布局需求,以便能够从那里获取正确的值。

如果您想立即更新,请调用 layoutIfNeeded() .

这是因为这是 UIKit 框架任意调用的方法之一,它可能不适合您的布局需求。

关于ios - Swift - 在 vi​​ewWillTransition() 期间未调用 TextView layoutSubviews(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61729092/

相关文章:

ios - 为什么当我尝试获取边界时 previewLayer 返回 nil?

swift - "Type of expression is ambiguous without more context"多维数组错误

ios - requestLocation() 在使用 Swift 2 的模拟器中总是失败

ios - CustomCell 未反射(reflect)在 UITableView 中

ios - armv6 和 armv7 的条件编译

ios - 可将图像拖动到另一个图像 IOS Swift

ios - Sprite-kit physicsBody apply脉冲

android - 使用 RenderScript 旋转肖像模式的 YUV 图像数据

iphone - ipad 应用程序不适用于横向模式

选择建议后 Android Searchview 禁用全屏不起作用