iOS7 UISplitViewController 状态栏
Posted
技术标签:
【中文标题】iOS7 UISplitViewController 状态栏【英文标题】:iOS7 UISplitViewController status bar 【发布时间】:2013-10-01 12:18:02 【问题描述】:我正在尝试将 splitview 控制器添加为子视图控制器。父视图控制器是导航控制器。导航栏对于父视图控制器是隐藏的,我想将状态栏显示为 ios 6 标准。我已将 splitview 控制器添加为子视图控制器,因为我想从 splitview 控制器推送到另一个视图控制器。
我面临的问题是,当我添加 splitview 控制器时,状态栏在内容上重叠。为 masterview、detailview、parentview、splitview 设置 edgesForExtendedLayout 为 UIRectEdgeNone 似乎不起作用。
请让我知道我可以应用的解决方案,以防止内容与状态栏重叠并将状态栏显示为 ios 6 标准。
我尝试使用 MGSplitViewController,但遇到了同样的问题。
谢谢。
【问题讨论】:
有同样的问题。也很好奇。似乎 Apple 推荐的技术不适用于 SplitViewController。例如参见:developer.apple.com/library/ios/qa/qa1797/_index.html 你知道了吗?我对 UISplitViewController 也有同样的问题,和你一样,我已经尝试为所有可能的视图控制器设置 edgeForExtendedLayout 无济于事。谢谢。 【参考方案1】:我有完全相同的问题,并且能够解决这个问题。我在根目录有一个 UITabBarController,在前两个选项卡上都有一个不同的 UISplitViewController。对于我的一些细节视图,我让它与顶部的导航栏和底部的标签栏重叠。
我一开始也尝试设置edgesForExtendedLayout
,但没有成功,但事实证明你需要尽早设置它才能生效。你没有在你的问题中具体说明你在哪里设置你的属性,所以我希望这对你也有帮助:在你的 UIViewController 的-viewDidLoad
中将edgesForExtendedLayout
设置为UIRectEdgeNone
。
这是为我修复它的代码,而之前在 -viewWillLayoutSubviews
中的尝试完全没有效果:
- (void)viewDidLoad
[super viewDidLoad];
// Prevent detail screen from sitting underneath navigation bar and tab bar:
self.edgesForExtendedLayout = UIRectEdgeNone;
希望对你有帮助……
埃里克
【讨论】:
【参考方案2】:当你说:
我正在尝试将拆分视图控制器添加为子视图控制器。
您的意思是将 UISplitViewController 设置为 rootViewController 吗?如果不是,那可能就是它表现得很奇怪的原因。
但是 UISplitViewControllers 并非设计为以这种方式工作,请参阅此答案https://***.com/a/2642701/383603
我会使用容器视图控制器来创建自定义拆分视图控制器:https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html
这里有很多好的链接:Container View Controller Examples
显然,必须重新创建它有点烦人,但至少你可以完全控制它的行为。
【讨论】:
【参考方案3】:我认为您必须使用 viewcontrollers 父级,启用导航控制器的子级可能会对您有所帮助。如果没有,那么试试这个tutorial。 这对我很有帮助,希望对你也有帮助。
【讨论】:
以上是关于iOS7 UISplitViewController 状态栏的主要内容,如果未能解决你的问题,请参考以下文章