导航栏的背景图像错误

时间:2014-10-26 17:02:00

标签: ios uinavigationcontroller ios8 uinavigationbar uibarmetrics

我在iOS 8中遇到了这个问题,其中导航栏的错误背景图像会在以下任何情况下显示:

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

要隔离基于视图控制器的状态栏外观设置为YES(默认)并且导航控制器以模态方式显示的问题,我按照以下步骤从头创建了一个测试项目:

  1. 使用" Master-Detail Application"创建一个新项目。模板。

  2. 打开Main.storyboard并向其添加导航控制器。删除其根视图控制器并使用模态segue 连接主视图控制器。然后将Detail View Controller连接为其根视图控制器。你应该得到这样的东西:

  3. enter image description here

    1. 通过外观代理自定义导航栏背景。使用两个不同的图像作为纵向(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;
      }
      
    2. 运行该应用。主视图控制器显示纵向和横向方向的右侧导航栏背景图像:

    3. enter image description here

      enter image description here

      1. 现在以模态方式显示详细信息视图控制器。为此,请点击"添加"按钮,然后选择新创建的行。详细信息视图控制器显示右侧导航栏背景图像。

      2. 旋转界面。详细视图控制器将更改导航栏背景图像(错误):

      3. enter image description here

        1. 将界面旋转回原始方向。详细信息视图控制器将更改导航栏背景图像(错误):
        2. enter image description here

          还有其他人在努力解决这个问题吗?

1 个答案:

答案 0 :(得分: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];
}
相关问题