我使用此代码设置背景。 它确实改变了背景,但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:
背景有双倍高度......
我整个上午都在这个问题上度过。 有谁能够帮我? 谢谢!
答案 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];
答案 4 :(得分:0)
这很奇怪你应该检查你是否正确添加了2x图像