我更新应用程序时遇到问题,以便UINavigationBar实例显示大型 Headers . 问题是,在我的应用程序的某些屏幕中,我不希望UINavigationBar具有阴影或背景颜色,所以我有一种方法可以将其外观从“固定”状态更改为“透明”状态,然后向后 . 这是代码:

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
    }
}

正如您所看到的,此方法所做的就是更改半透明属性并设置/取消设置shadowImage和backgroundImage . 这没有使用大型 Headers 工作正常,我附加和设置透明外观的图像:

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

所以事实是,只有在不显示大型 Headers 时才会为navigationBar显示背景 . 我不知道是否必须更换另一个属性,否则这不适用于大型游戏 . 任何帮助将不胜感激,提前谢谢 .