有谁知道为什么将设备旋转到纵向模式时不调用 UITextView.layoutSubviews() ?
当旋转到横向模式时,这些被称为:
- UIViewController.viewWillTransition
- UIViewController.viewDidLayoutSubviews
- UITextView.layoutSubviews
- UILabel.layoutSubviews
但是当旋转回纵向时,会调用 UILabel.layoutSubviews(),而不是 UITextView.layoutSubviews。这是一个空项目,除了这些方法中的跟踪之外没有其他代码。
最佳答案
layoutSubviews
通常在上一次运行循环调用中调用 setNeedsLayout()
时调用。
如果布局系统认为不需要调用,则不会调用。
理想情况下,您不应覆盖此函数。您应该在进行 superview
更改后调用 setNeedsLayout()
,并让布局系统调用此函数的默认实现。此外,您应该在自动布局中定义 subview 布局需求,以便能够从那里获取正确的值。
如果您想立即更新,请调用 layoutIfNeeded()
.
这是因为这是 UIKit 框架任意调用的方法之一,它可能不适合您的布局需求。
关于ios - Swift - 在 viewWillTransition() 期间未调用 TextView layoutSubviews(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61729092/