如何将透明的“大标题”UINavigationBar 重置为默认外观设置?

Posted

技术标签:

【中文标题】如何将透明的“大标题”UINavigationBar 重置为默认外观设置?【英文标题】:How to reset a transparent 'large title' UINavigationBar to default appearance settings? 【发布时间】:2019-03-25 21:22:21 【问题描述】:

我正在尝试研究如何将透明的“大标题”导航栏重置为默认外观设置。

我使用下面的setTransparent() 函数来配置我的透明导航栏。

reset() 函数成功重置默认大小的导航栏,但无法重置“大标题”导航栏。

extension UINavigationBar 

    func setTransparent() 

        // set large titles
        self.prefersLargeTitles = true

        // set colour of nav items
        self.tintColor = .white

        // set background colour
        self.barTintColor = .green

        // make transparent
        self.setBackgroundImage(UIImage(), for: .default)
        self.shadowImage = UIImage()
        self.isTranslucent = true
    

    func reset() 
        self.setBackgroundImage(nil, for: .default)
        self.shadowImage = nil
        self.isTranslucent = false
    

我认为这与“大标题”不能与 backgroundImage/shadowImage 一起使用...

【问题讨论】:

【参考方案1】:

你可以试试这个功能在大标题模式下重置:

func setTransparent() 

    // set large titles
    self.prefersLargeTitles = false

    // set colour of nav items
    self.tintColor = .white

    // set background colour
    self.barTintColor = .green
self.backgroundColor = nil
    // make transparent
    self.setBackgroundImage(UIImage(), for: .default)
    self.shadowImage = UIImage()
    self.isTranslucent = true


func reset() 
    self.setBackgroundImage(nil, for: .default)
    self.shadowImage = nil
    self.backgroundColor = UIColor.green

    self.isTranslucent = false
   self.largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.green]

【讨论】:

感谢您的建议,但即使在 viewWillAppear() 中调用 reset() 后,导航栏似乎仍然是透明的 不是绿色的吗? 不,它仍然是透明的......我想知道这是否是“大标题”的错误,因为它们无法重置?

以上是关于如何将透明的“大标题”UINavigationBar 重置为默认外观设置?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS8 中使用 clipsToBounds = YES 时,状态栏完全变黑。我该如何改变?

如何将CMD窗口背景改成透明?

Vegas7.0如何将插入的图片背景透明和移动?

tkinter如何将一个部件透明??

如何将背景转换为透明? [关闭]

如何将控件设置为透明背景