如何在ios5(Retina)中设置导航栏的背景?

时间:2012-03-28 04:39:07

标签: iphone ios

我使用此代码设置背景。 它确实改变了背景,但Retina存在一些问题。

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navi_bar.png"] forBarMetrics:UIBarMetricsDefault];

我有两个png:navi_bar.png(320 * 44)和navi_bar@2x.png(640 * 88)

导航栏的背景始终使用图像navi_bar.png,即使在Retina中也是如此。

如果我使用此代码:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navi_bar@2x.png"] forBarMetrics:UIBarMetricsDefault];

结果是在Retina: enter image description here

背景有双倍高度......

我整个上午都在这个问题上度过。 有谁能够帮我? 谢谢!

5 个答案:

答案 0 :(得分:3)

试试这个

  UINavigationBar *navBarName = [[self navigationController] navigationBar];
    UIImage *backgroundImg = [UIImage imageNamed:@"navi_bar"];
    [navBarName setBackgroundImage:backgroundImg forBarMetrics:UIBarMetricsDefault];

答案 1 :(得分:1)

您不必撰写@"navi_bar@2x.png"。 iOS将自动为视网膜显示选择正确的图像。只需使用@"navi_bar.png"

编辑 - This SO question会有所帮助

答案 2 :(得分:1)

我遇到了同样的问题:即使NavBarBg@2x.png可用,NavBarBg.png仍适用于视网膜设备。但它似乎只与模拟器有关。当我在设备上运行应用程序时,NavBarBg @ 2x.png正确应用。

答案 3 :(得分:0)

您可以使用:[[UINavigationBar appearance] setBackgroundImage:aImg forBarMetrics:UIBarMetricsDefault];

iOS 5中的

答案 4 :(得分:0)

这很奇怪你应该检查你是否正确添加了2x图像