我有一个实现UISplitViewController的应用程序。细节和主VC都嵌入在导航控制器中。但是,当详细导航控制器显示其根/顶级视图时,我希望隐藏主视图。
在iOS 6上,我可以通过以下方式完成此任务:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[self splitViewController] setDelegate:nil];
[[self splitViewController] setDelegate:self];
[[[self splitViewController] view] setNeedsLayout];
[[self splitViewController] willRotateToInterfaceOrientation:CURRENT_ORIENTATION duration:0];
[[self view] setNeedsLayout];
}
然而,相同的代码在iOS 7上不起作用。
转换后,主视图实际上隐藏了,但细节不适合整个屏幕,并且右侧有灰色间距与主人的宽度相同。
如果设备旋转两次,则它将填满屏幕。
在iOS 6上,视图转换后,细节将自动填满屏幕。
答案 0 :(得分:0)
知道了!我用下面的代码替换了上面的代码。现在它适用于iOS 6和7。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[self splitViewController] setDelegate:nil];
[[self splitViewController] setDelegate:self];
[[self splitViewController] willAnimateRotationToInterfaceOrientation:CURRENT_ORIENTATION duration:0];
[[self splitViewController] willRotateToInterfaceOrientation:CURRENT_ORIENTATION duration:0];
[[self splitViewController] didRotateFromInterfaceOrientation:CURRENT_ORIENTATION];
[[self splitViewController] viewWillLayoutSubviews];
[[[self splitViewController] view] layoutSubviews];
}