如何使用资产目录作为导航栏背景图片?
Posted
技术标签:
【中文标题】如何使用资产目录作为导航栏背景图片?【英文标题】:How to use asset catalog for navigation bar background image? 【发布时间】:2016-01-27 12:41:23 【问题描述】:我使用带有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的资源分不出来真的很烦。
有什么建议吗?谢谢
【问题讨论】:
【参考方案1】:抱歉,没有注意到 UINavigationBar 的事情...您可以通过将图片设置为 stretchable 来更改背景中使用的图片的大小。这样您就可以使用适合较小设备(在您的示例中为 iPhone5)的图片,并在 iPhone 6 中保持图片居中。
另一个更复杂的解决方案是完全继承 NavBar 并重写图片的绘制方式。
您应该使用 NSLayoutConstraints(前导、顶部和尾随),并将 UIImageView 内容设置为适合。这样您就不需要更改图像,它会由应用程序自动缩放。
【讨论】:
UINavigationBar
是否提供 api 用于检索 bg 图像视图?
不,它没有。用possible
解决方案更新了我的答案。
谢谢,我认为最好的方法是 NavBar 子类以上是关于如何使用资产目录作为导航栏背景图片?的主要内容,如果未能解决你的问题,请参考以下文章