7

我正在尝试将 splitview 控制器添加为子视图控制器。父视图控制器是导航控制器。导航栏对于父视图控制器是隐藏的,我想将状态栏显示为 iOS 6 标准。我添加了 splitview 控制器作为子视图控制器,因为我想从 splitview 控制器推送到另一个视图控制器。

我面临的问题是当我添加 splitview 控制器时,状态栏在内容上重叠。为 masterview、detailview、parentview、splitview 设置 edgeForExtendedLayout 到 UIRectEdgeNone 似乎不起作用。

请让我知道我可以应用的解决方案,以防止内容与状态栏重叠并将状态栏显示为 ios 6 标准。

我尝试使用 MGSplitViewController 进行操作,但遇到了同样的问题。

谢谢。

4

3 回答 3

1

我有完全相同的问题,并且能够解决这个问题。我在根目录有一个 UITabBarController,在前两个选项卡上都有一个不同的 UISplitViewController。对于我的一些细节视图,我让它与顶部的导航栏和底部的标签栏重叠。

我一开始也尝试设置edgesForExtendedLayout,但没有成功,但事实证明你需要尽早设置它才能生效。你没有在你的问题中指定你在哪里设置你的属性,所以我希望这对你也有帮助:在你的 UIViewController中设置edgesForExtendedLayout为。UIRectEdgeNone-viewDidLoad

这是为我修复它的代码,而之前的尝试-viewWillLayoutSubviews完全没有效果:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Prevent detail screen from sitting underneath navigation bar and tab bar:
    self.edgesForExtendedLayout = UIRectEdgeNone;
}

希望这可以帮助...

埃里克

于 2015-04-09T13:11:26.917 回答
0

我认为您必须使用 viewcontrollers 父级,启用导航控制器的子级可能会对您有所帮助。如果没有,请尝试本教程。这对我有很大帮助,我希望它也能帮助你。

于 2014-08-12T12:25:16.227 回答
0

当你说:

我正在尝试将拆分视图控制器添加为子视图控制器。

您的意思是将 UISplitViewController 设置为 rootViewController 吗?如果不是,那可能就是它表现得很奇怪的原因。

但是 UISplitViewControllers 并非设计为以这种方式工作,请参阅此答案https://stackoverflow.com/a/2642701/383603

我会使用容器视图控制器来创建自定义拆分视图控制器:https ://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html

这里有很多好的链接:容器视图控制器示例

显然,不得不重新创建它有点烦人,但至少你可以完全控制它的行为。

于 2013-12-05T14:06:48.520 回答