2

我就遇到了这个问题的iOS 8,其中显示在上述任何一种情况导航栏错背景图片:错误的背景图片

  • 认为基于控制器的状态栏外观设置到YES(默认值),并以模态方式显示导航控制器。
  • 基于视图控制器的状态栏外观设置为NO并且状态栏最初是隐藏的。在这种情况下,导航控制器不需要以模态方式呈现以显示错误的图像。

为了分离,其中所述基于控制器视图状态栏的外观设置为YES(默认值)的问题和导航控制器呈现模态我创建从头一个测试项目执行以下步骤:

  1. 使用“主/从应用程序”模板创建一个新项目。

  2. 打开Main.storyboard并为其添加导航控制器。移除其根视图控制器并将Master View Controller与modal segue连接起来。然后连接Detail View Controller作为其根视图控制器。你应该结束了这样的事:

enter image description here

  • 经由定制外观代理导航栏背景。使用两个不同的肖像(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; 
    } 
    
  • 运行应用程序。主视图控制器显示在右侧导航栏背景图像纵向和横向:

  • enter image description here

    enter image description here

  • 现在提出的详细视图控制器模态。为此,请点击“添加”按钮,然后选择新创建的行。详细视图控制器显示右侧导航栏背景图像。

  • 旋转接口。的详细视图控制器将变化导航栏背景图像():

  • enter image description here

  • 旋转界面回到其原始取向。详细信息视图控制器将改变导航栏背景图片(错误):
  • enter image description here

    有没有其他人有这个挣扎?

    回答

    2

    是的,我一直在努力,在目标的plist文件中添加"View controller-based status bar appearance"后,它在iOS 8上再次运行,请记住将其设置为NO

    在MasterViewController中,当detailViewController被解除时,添加此以避免错误的背景图像。它基本上再次设置相同的外观。

    - (void)viewDidAppear:(BOOL)animated 
    { 
        [super viewDidAppear:animated]; 
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor redColor]] forBarMetrics:UIBarMetricsDefault]; 
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageWithColor:[UIColor blueColor]] forBarMetrics:UIBarMetricsCompact]; 
    } 
    
    +0

    +1。这*几乎*解决了这个问题(如果你愿意放弃基于视图控制器的状态栏外观)。现在,当详细视图控制器旋转时,显示**右导航栏背景图像。但是,当详细视图控制器被解散(至少一次旋转后)时,主视图控制器将显示错误的**导航栏背景图像(直到再次旋转界面)。同样的事情发生在你身上吗? – albertamg 2014-10-27 12:03:54

    +0

    是的,它也发生在我身上,请参阅编辑。 – gabbler 2014-10-27 13:05:29

    +0

    感谢您与我分享您的知识。这可以解决问题,如果状态栏是**不是**最初隐藏。我接受你的答案,尽管它比一个干净的解决方案更像一个讨厌的bug的解决方法。 – albertamg 2014-10-27 15:55:24