(如果需要的话,请查看其他编辑,而不是有一个过长的问题,需要编辑才能进行最终编辑以进行澄清)。
我有一个应用程序,其设置如下:
初始化视图控制器(ECSlidingViewController的子类)
主导航控制器(UINavigationController的子类)
主主主视图控制器(UIViewController的子类
在初始视图控制器的viewdiload
中,我加载主导航控制器,主视图控制器作为其根。
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainNavVC"];
这就是想要的效果。
然而,我然后加载一个模态视图控制器并关闭它,使用标准方法:
[self performSegueWithIdentifier:@"LoadSelectOpponentVC" sender:self];
然后以以下方式结束:
[self dismissViewControllerAnimated:YES completion:nil];
这进而导致主导航控制器(握住主视图控制器)错误地显示状态栏并重叠:
查看基于控制器的状态栏外观
edgesForExtendedLayout
设置为相关的none,但没有更改我已尝试注销一些帧以查看问题发生的位置:
首次加载时:
主导航VC-查看帧-{{0,0},{320,480}}
Main Nav VC - Nav Bar Frame - {{0, 0}, {320, 44}}
Initial VC - View Frame - {{0, 0}, {320, 480}}
Home VC - View Frame - {{0, 0}, {320, 480}} -- viewDidLoad Home VC
Home VC - View Frame - {{0, 64}, {320, 416}} -- viewWillAppear Home VC
--- After Modal is opened/closed ----
Home VC - View Frame - {{0, 64}, {320, 416}} -- viewWillAppear Home VC
Main Nav VC - View Frame - {{0, 0}, {320, 480}} -- viewWillAppear Main Nav
Main Nav VC - Nav Bar Frame - {{0, 20}, {320, 44}} -- viewWillAppear Main Nav
Home VC - View Frame - {{0, 44}, {320, 436}} -- viewDidAppear Home VC
我很惊讶还没有人找到正确的答案。UIBarPositiongDelegate工作起来很有魅力!只需将视图控制器设置为UIBarPositiongDelegate,并将其指定为该栏的代理即可。将该条放置在距离视图顶部20像素的位置。然后将此方法添加到视图控制器(仅在iOS7中可用):
- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar
{
return UIBarPositionTopAttached;
}
在iOS7.0UIViewController
默认以这种方式工作。如果您在UINavigationController中使用UIViewController,视图将是全屏的,并且导航栏是可见的。
如果导航栏可见,请执行以下操作==
self.edgesForExtendedLayout = UIRectEdgeNone
如果导航栏被隐藏,请执行以下操作。==
通过移动20个点来调整所有ui视图
元素
如果使用Interface builder,则可以使用iOS6/7增量:首先,“以iOS 6.0的形式查看”,然后将增量设置为“20”,以实现iOS 7中的20偏移
您是否尝试过苹果关于“防止状态栏覆盖您的视图”的建议:https://developer.apple.com/library/content/qa/qa1797/_index.html
您是否看过“UIBarPositiongDelegate”:https://developer.apple.com/documentation/uikit/uibarpositioningdelegate
我正在将我的应用程序迁移到iOS 7。为了处理状态栏问题,我添加了以下代码 这在正常情况下工作正常。如果我正在更改方向(应用程序仅支持横向方向)或显示任何视图控制器并取消模型视图控制器,则我的视图控制器对齐方式将更改。状态栏再次与我的视图控制器重叠。这段代码根本不起作用。请指导我解决此状态栏问题。 案例2:这就是我展示视图控制器的方式 裁判: 提前谢谢。
我正在构建一个iOS网络应用程序。自从升级到iOS 7后,我注意到状态栏有很多问题。我想让状态栏显示为带黑色文本/图标的白色,但我似乎无法理解。 我尝试过的meta标签有: 只显示一个空的黑条,并向下移动内容: 显示带有白色文本/图标的黑色条: 显示带有白色文本/图标的白色条: 关于我做错了什么,或者如何让状态栏显示为带黑色文本的白色背景,有什么想法吗?
我最近升级到xcode 5,当我在iOS模拟器中运行我的应用程序时,启动屏幕与状态栏重叠,当你在应用程序中时,状态栏与我应用程序上的元素重叠,就像我在应用程序左上角的后退按钮一样。我使用phonegap 2.9构建我的应用程序。你知道我怎样才能正确地渲染它吗。
我刚刚将iPhone5iOS7升级到四个测试版。现在,当我在iPhone上从Xcode 5运行我的应用程序时,状态栏不会隐藏,即使它应该隐藏。 不工作: 不工作: 无法登录到Apple开发者论坛
我当前的应用程序运行在iOS 4.2、5和6上。 导航栏为橙色,状态栏为黑色背景色。然而,当我在iOS 7上运行相同的应用程序时,我观察到状态栏看起来是透明的,与导航栏的背景颜色相同。 因此,我无法区分状态栏和导航栏。如何使状态栏与iOS 5和iOS 6中的状态栏相同,即黑色背景色和白色文本色?我如何通过编程实现这一点? 我在谷歌上搜索了一下,发现一个建议,我必须添加一个黑色背景,大约20像素高的
我正在为iOS 7更新我的应用程序,我正在调整我的所有视图,以适应新的透明状态栏(我的应用程序仍将使用不透明的导航栏)。 在每个视图中调整状态栏都相对容易,除了我的一个视图控制器中的UISearchBar连接到UISearchDisplayController时遇到的一个主要问题。 搜索栏似乎显示正常,如下所示: 问题是,一旦我开始搜索,导航栏就会消失(应该如此),但其他所有内容也会向上移动以重叠