如何使用资产目录作为导航栏背景图片?
How to use asset catalog for navigation bar background image?
我将资产目录与 2x
图像一起用于 iPhone5 和 6,如 docs 中所述:
导航栏背景图片是 750x128 (750 x 44 * 2 + 20 * 2) 因为我也想覆盖状态栏。 750 是 iPhone6 分辨率宽度。背景图片设置:
self.navigationController?.navigationBar
.setBackgroundImage(UIImage(named: "nav_bar_bg"), forBarMetrics: .Default)
让我们看看结果:
好的。 iPhone5:
不行。如何在不从资产目录中删除背景图像的情况下缩小它?我真的不想硬编码它。 iPhone5和6个资源分不开,真是烦人。
有什么建议吗?谢谢
抱歉,没有注意到 UINavigationBar 的东西...您可以通过制作图片 stretchable 来更改背景中使用的图片的大小。这样您就可以使用适合较小设备的图片(示例中的 iPhone5)并使图片居中 iPhone 6.
另一个更复杂的解决方案是将 NavBar 完全子类化并重写图片的绘制方式。
您应该使用 NSLayoutConstraints(前导、顶部和尾随),并将 UIImageView 内容设置为适合。这样您就不需要更改图像,它会由应用程序自动缩放。
我将资产目录与 2x
图像一起用于 iPhone5 和 6,如 docs 中所述:
导航栏背景图片是 750x128 (750 x 44 * 2 + 20 * 2) 因为我也想覆盖状态栏。 750 是 iPhone6 分辨率宽度。背景图片设置:
self.navigationController?.navigationBar
.setBackgroundImage(UIImage(named: "nav_bar_bg"), forBarMetrics: .Default)
让我们看看结果:
好的。 iPhone5:
不行。如何在不从资产目录中删除背景图像的情况下缩小它?我真的不想硬编码它。 iPhone5和6个资源分不开,真是烦人。
有什么建议吗?谢谢
抱歉,没有注意到 UINavigationBar 的东西...您可以通过制作图片 stretchable 来更改背景中使用的图片的大小。这样您就可以使用适合较小设备的图片(示例中的 iPhone5)并使图片居中 iPhone 6.
另一个更复杂的解决方案是将 NavBar 完全子类化并重写图片的绘制方式。
您应该使用 NSLayoutConstraints(前导、顶部和尾随),并将 UIImageView 内容设置为适合。这样您就不需要更改图像,它会由应用程序自动缩放。