【发布时间】:2014-10-26 17:02:00
【问题描述】:
我在 iOS 8 中遇到了这个问题,其中导航栏的背景图像在以下任何一种情况下都会显示错误:
- 基于视图控制器的状态栏外观设置为
YES(默认),并且导航控制器以模态方式呈现。 - 基于视图控制器的状态栏外观设置为
NO,并且状态栏最初是隐藏的。在这种情况下,导航控制器不需要以模态方式呈现来显示错误的图像。
为了隔离基于视图控制器的状态栏外观设置为 YES(默认)并且导航控制器以模态方式呈现的问题,我按照以下步骤从头开始创建了一个测试项目:
使用“Master-Detail Application”模板创建一个新项目。
打开
Main.storyboard并向其添加导航控制器。移除它的根视图控制器并用 modal segue 连接主视图控制器。然后连接细节视图控制器作为它的根视图控制器。你应该得到这样的结果:
-
通过外观代理自定义导航栏背景。为纵向 (
UIBarMetricsDefault) 和横向 (UIBarMetricsCompact) 使用两个不同的图像。我在UIImage上使用了一个类别来从纯色创建图像。- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor redColor]] forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor blueColor]] forBarMetrics:UIBarMetricsCompact]; return YES; } 运行应用程序。主视图控制器为纵向和横向显示右侧导航栏背景图像:
现在以模态方式显示细节视图控制器。为此,请点击“添加”按钮,然后选择新创建的行。详细视图控制器显示右导航栏背景图像。
旋转界面。详细视图控制器将不会更改导航栏背景图像(错误):
- 将界面旋转回其原始方向。详细视图控制器将更改导航栏背景图像(错误):
还有其他人为此苦苦挣扎吗?
【问题讨论】:
标签: ios uinavigationcontroller ios8 uinavigationbar uibarmetrics