4

我的代码中有很多地方需要根据UIViewController. 例如,我在 nib 中有一个视图,然后我在代码中捕获它并用于为另一层创建蒙版,但我需要等到蒙版视图及其子视图具有正确的大小才能这样做。

我发现,虽然很hacky,但我可以通过创建一个每次viewDidLayoutSubviews调用时递增的计数器来实现这一点,并在第二次调用它时触发我希望执行的代码 - 由于某种原因,大多数视图都有尚未正确布置自己,直到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
    }
}
4

1 回答 1

1

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

于 2015-07-07T11:51:18.820 回答