我使用docs中描述的iPhone5和6的2x
图像资产目录:
导航栏背景图片为750x128(750 x 44 * 2 + 20 * 2)因为我还要覆盖状态栏。 750是iPhone6的分辨率宽度。 Bg图像设置:
self.navigationController?.navigationBar
.setBackgroundImage(UIImage(named: "nav_bar_bg"), forBarMetrics: .Default)
让我们看一下结果:
行。 iPhone5的:
不行。如何在不从资产目录中删除背景图像的情况下缩减它?我真的不想硬编码。 iPhone5和6资源无法分开,真的很烦人。
有什么建议吗?感谢
答案 0 :(得分:1)
抱歉,没有注意到UINavigationBar的事情......您可以通过制作图片stretchable来更改背景中使用的图片的大小调整。这样您就可以使用适合较小设备的图片(在您的示例中为iPhone5),并将图片保持在iPhone 6的中心位置。
另一个更复杂的解决方案是完全将NavBar子类化,并重写绘制图片的方式。
您应该使用NSLayoutConstraints(leading,top和trailing),并将UIImageView内容设置为Fit。这样您就不需要更改图像,它将由应用程序自动缩放。