菜鸟教程小白 发表于 2022-12-11 20:19:48

ios - 带有大标题的 UINavigationBar 没有背景图片


                                            <p><p>我在更新应用程序以使 <code>UINavigationBar</code> 实例显示大标题时遇到了问题。问题是在我的应用程序的某些屏幕中,我不希望 <code>UINavigationBar</code> 有 <code>shadow</code> 或 <code>backgroundColor</code>,所以我有一个方法将其外观从“固态”状态更改为“透明”状态,然后倒退。代码如下:</p>

<pre><code>public static func setNavAppearance(type: AppearanceType, navigationBar: UINavigationBar?) {

    if (type == .transparent) {
      navigationBar?.setBackgroundImage(UIImage.init(), for: .default)
      navigationBar?.shadowImage = UIImage.init()
      navigationBar?.isTranslucent = true
    }
    else {
      navigationBar?.shadowImage = nil
      navigationBar?.setBackgroundImage(nil, for: UIBarMetrics.default)
      navigationBar?.isTranslucent = false
    }
}
</code></pre>

<p>如您所见,此方法所做的只是更改 <code>translucent</code> 属性并设置/取消设置 <code>shadowImage</code> 和 <code>backgroundImage</code>。这在不使用大标题的情况下工作得很好,我附上设置透明外观的图像:</p>

<p> <a href="/image/I4Yo2.jpg" rel="noreferrer noopener nofollow">UINavigationBar without background image and shadow, but showing UIBarButtonItems and backButton</a> </p>

<p>对于大标题,这仍然可以正常工作;将外观类型设置回“实心”后出现问题。我再附上两张显示问题的图片:</p>

<p> <a href="/image/j7NtL.png" rel="noreferrer noopener nofollow">UINavigationBar still doesn&#39;t have background</a> </p>

<p> <a href="/image/57pLY.png" rel="noreferrer noopener nofollow">After scrolling up a bit so that large title is collapsed, background color appears</a> </p>

<p>所以问题是,只有在 <code>navigationBar</code> 不显示大标题时才会显示背景。我不知道我是否必须更改其他属性,否则这不适用于大型标题。任何帮助将不胜感激,在此先感谢。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我也遇到了这个问题。我的解决方法是将 UINavigationController 的 UIView 的背景颜色设置为 UINavigationBar 应该具有的背景颜色。</p>

<p>然后将 UINavigationBar 颜色设置为 UIClear 和半透明,并确保带有大标题的 UIViewController 不应在顶栏下方延伸其边缘。</p>

<p>基本上就是将导航 Controller 的背景设置为导航栏的背景,并将顶部的所有背景设置为半透明。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 带有大标题的 UINavigationBar 没有背景图片,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/51157306/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/51157306/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 带有大标题的 UINavigationBar 没有背景图片