UINavigationBar背景-如何覆盖所有尺寸、分辨率和设备



我有以下代码,可以很好地设置背景图像:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed: @"navbar_bg.png"] forBarMetrics:UIBarMetricsDefault];

我的问题是,对于Xcode6、iOS8/9、iPhone 5、6、6+、iPad等,我如何确保覆盖所有设备、宽度和分辨率,以确保我的背景图像始终正确填充导航栏?

我在SO和其他各种网站上看到过其他问题,但都已经有2-4年的历史了,所以不要提及或涵盖最新的设备宽度和分辨率。

我想在导航栏中使用背景图像,但我需要确保它在所有可能的设备上都很好看。

您所要做的就是在资产目录中有三个版本的图像。第一个尺寸你需要第二个尺寸的两倍,第三个尺寸的三倍。Xcode将把正确的图像放在正确的设备上。

或者,您可以只放置一个矢量图像,然后在编译时Xcode将为您动态生成三个图像。

对于导航栏,您需要单独的纵向和横向图像。你可以写这样的东西:

UIImage *portraitImage = [UIImage imageNamed:@"test_bar_portrait.png"];
UIImage *landscapeImage = [UIImage imageNamed:@"test_bar_landscape.png"];
[[UINavigationBar appearance] setBackgroundImage:portraitImage forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:landscapeImage forBarMetrics:UIBarMetricsLandscapePhone];
self.navigationController.navigationBar.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;

最新更新