ios - UIViewController 的 subview 最初在什么时候明确布局?

标签 ios objective-c uiviewcontroller autolayout viewdidlayoutsubviews

我的代码中有很多地方需要根据 UIViewController 中的 View 布局来执行操作。例如,我在 nib 中有一个 View ,然后我在代码中捕获它并用于为另一层创建 mask ,但我需要等到 mask View 及其 subview 具有正确的大小才能这样做。

我发现,虽然很老套,但我可以通过创建一个计数器来实现这一点,该计数器在每次 viewDidLayoutSubviews 被调用时递增,并在第二次被调用时触发我希望执行的代码时间 - 由于某种原因,大多数 View 在第二次调用 viewDidLayoutSubviews 之前尚未正确布局。

就像我说的,这看起来很老套,而且 iOS 更新很有可能破坏我的代码。有没有人有更好的方法来做到这一点?

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.layoutCount = 0;
}

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.layoutCount ++;
    if (self.layoutCount == 2)
    {
        // perform final layout code, e.g. create masks
    }
}

最佳答案

最安全的方法可能是每次调用 viewDidLayoutSubviews 时“刷新”掩码。这样您就不必担心 View 是否已布局。

关于ios - UIViewController 的 subview 最初在什么时候明确布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31263109/

相关文章:

ios - Twilio,检测对方是否接听电话?

objective-c - 如何在 iPhone(特别是 iPad)上使用 CoreGraphics 绘制一个简单的椭圆?

ios - 是否可以快速将录音机音频文件保存在音乐中?

ios - 在 UIViewController 之间共享 View ?第二个 viewController "steals"从第一个 View 开始?

ios - UIAppearance 没有设置自定义 UITableViewCell 的样式

ios - React Native 应用程序在 Release模式下崩溃但在 Debug模式下运行良好

ios - 解析 : Create 1-to-1 relation on PFObject with support for multiple class types?

ios - 谁负责在自定义 UIViewController 容器中调用 viewWillLayoutSubviews()/viewDidLayoutSubviews()?

ios - 如何在 View Controller 中多次加载相同的 View

javascript - PhoneGap iOS + DOM 异常 18