gpt4 book ai didi

ios - viewDidLayoutSubviews 无限循环与 iOS 8

转载 作者:可可西里 更新时间:2023-11-01 03:08:57 27 4
gpt4 key购买 nike

我有一个通用 iOS 项目,可以与 Xcode 5(iOS 6 和 iOS 7)完美运行。我为 iPad 和 iPhone 使用不同的 Storyboard。

当我使用 Xcode 6 GM 运行它时,它与 iPhone 完美配合,但不适用于 iPad。调试了一下,发现UISplitViewController中的viewDidLayoutSubviews有问题。例如:


- (void)viewDidLayoutSubviews {
[ super viewDidLayoutSubviews];
NSLog(@"运行");
//一些带有子 Controller 框架的配置
}

它一直在运行,没有停止。

有人遇到同样的问题吗?请帮助:(

谢谢!

最佳答案

您在子 Controller 的 viewDidLayoutSubviews 覆盖中的代码本身正在修改 View 的 subview ,因此触发 viewDidLayoutSubviews 被一次又一次地调用。

为防止这种情况,请尝试向您的 UISplitViewController 添加一个 BOOL 属性来控制子 Controller 布局代码的执行。

@interface UISplitViewController()
...
@property (nonatomic) BOOL subViewLayoutCalled;
...
@end

然后在你的 viewDidLayoutSubviews...

- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
NSLog(@"run");
if (!self.subViewLayoutCalled) {
self.subViewLayoutCalled = YES;
// some config with frame of child controllers
}
}

值得一试。

我最近遇到了同样的问题。

关于ios - viewDidLayoutSubviews 无限循环与 iOS 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25881709/

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