首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标题较大的UINavigationBar没有背景图片

问标题较大的UINavigationBar没有背景图片
EN

Stack Overflow用户
提问于 2018-07-03 22:40:05
回答 1查看 990关注 0票数 2

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

代码语言:javascript
复制
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
    }
}

正如您所看到的,此方法所做的全部工作就是更改translucent属性以及设置/取消设置shadowImage和backgroundImage。这在没有使用大标题的情况下工作得很好,在那里我附加了设置透明外观所做的图像:

UINavigationBar without background image and shadow, but showing UIBarButtonItems and backButton

对于大标题,这仍然可以很好地工作;问题出现在将外观类型设置回"solid“之后。我附加了另外两张显示问题的图像:

UINavigationBar still doesn't have background

After scrolling up a bit so that large title is collapsed, background color appears

所以问题是,只有当navigationBar不显示大标题时,它才会显示背景。我不知道我是否必须更改另一个属性,或者这对大标题不起作用。任何帮助都将不胜感激,提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-09-06 17:46:05

我也提到了这个问题。我的解决方法是将UINavigationController的UIView的背景色设置为UINavigationBar应该具有的背景色。

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

它基本上是将导航控制器的背景设置为导航栏的背景,并将顶部的所有背景设置为半透明。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51157306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档