希望是一个小问题的长标题。
我有一个带有自定义背景图像的 UINavigationBar。我的应用程序将支持横向和纵向。风景在视网膜 3 英寸和非视网膜屏幕的模拟器中运行良好。但是,在视网膜 4 英寸屏幕上,背景图像在横向模式下显示为两倍大小。
这是我的自定义导航控制器的 init 方法中的相关代码片段:
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-bg.png"] forBarMetrics:UIBarMetricsDefault];
if (IS_IPHONE_5)
{
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-bg-landscape-iphone5.png"] forBarMetrics:UIBarMetricsLandscapePhone];
}
else
{
[self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar-bg-landscape.png"] forBarMetrics:UIBarMetricsLandscapePhone];
}
IS_IPHONE_5 是一个宏定义为:
#define WIDTH_IPHONE_5 568
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds].size.height == WIDTH_IPHONE_5)
这里有 2 个屏幕片段,可以更清楚地解释事情。当应用程序以纵向模式打开时,一切都很好:
更改为横向模式时全部爆炸:
背景图像的横向版本的图像尺寸(以像素为单位,宽 x 高)为:
- 导航栏-bg-landscape.png:480x44
- 导航栏-bg-landscape@2x.png: 960x88
- 导航栏-bg-风景-iphone5.png:1136x88
或者它可能是一个模拟器唯一的问题?(我现在没有真正的 iPhone 5)