如何使用资产目录导航栏背景图像?

时间:2016-01-27 12:41:24

标签: ios swift uinavigationcontroller asset-catalog

我使用docs中描述的iPhone5和6的2x图像资产目录:

enter image description here

导航栏背景图片为750x128(750 x 44 * 2 + 20 * 2)因为我还要覆盖状态栏。 750是iPhone6的分辨率宽度。 Bg图像设置:

self.navigationController?.navigationBar
    .setBackgroundImage(UIImage(named: "nav_bar_bg"), forBarMetrics: .Default)

让我们看一下结果:

enter image description here

行。 iPhone5的:

enter image description here

不行。如何在不从资产目录中删除背景图像的情况下缩减它?我真的不想硬编码。 iPhone5和6资源无法分开,真的很烦人。

有什么建议吗?感谢

1 个答案:

答案 0 :(得分:1)

抱歉,没有注意到UINavigationBar的事情......您可以通过制作图片stretchable来更改背景中使用的图片的大小调整。这样您就可以使用适合较小设备的图片(在您的示例中为iPhone5),并将图片保持在iPhone 6的中心位置。

另一个更复杂的解决方案是完全将NavBar子类化,并重写绘制图片的方式。

您应该使用NSLayoutConstraints(leading,top和trailing),并将UIImageView内容设置为Fit。这样您就不需要更改图像,它将由应用程序自动缩放。