【问题标题】: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的资源分不出来真的很烦。

有什么建议吗?谢谢

【问题讨论】:

    标签: ios swift uinavigationcontroller asset-catalog


    【解决方案1】:

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

    另一个更复杂的解决方案是完全继承 NavBar 并重写图片的绘制方式。


    您应该使用 NSLayoutConstraints(前导、顶部和尾随),并将 UIImageView 内容设置为适合。这样您就不需要更改图像,它会由应用程序自动缩放。

    【讨论】:

    • UINavigationBar 是否提供 api 用于检索 bg 图像视图?
    • 不,它没有。用possible 解决方案更新了我的答案。
    • 谢谢,我认为最好的方法是 NavBar 子类
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多