我有一个与Xcode 5(iOS 6和iOS 7)完美运行的Universal iOS项目。我为iPad和iPhone使用了不同的 Storyboard。
当我在Xcode 6 GM上运行它时,它可以在iPhone上完美运行,但不能在iPad上运行。我调试后发现UISplitViewController中的viewDidLayoutSubviews存在问题。例如:- (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; NSLog(@"run"); // some config with frame of child controllers}
它连续运行并且没有停止。
有人有同样的问题吗?请帮忙 :(
谢谢!
最佳答案
您在子 Controller 的viewDidLayoutSubviews覆盖中拥有的代码本身就是在修改 View 的 subview ,触发viewDidLayoutSubviews一次又一次地调用。
为避免这种情况,请尝试将BOOL属性添加到UISplitViewController中,以控制子 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 - iOS 8的viewDidLayoutSubviews无限循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25881709/