如何在navigationBar上使用普通和大型标题的不同风格?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在navigationBar上使用普通和大型标题的不同风格?相关的知识,希望对你有一定的参考价值。

我在导航栏中使用大标题。我还称它有这样的阴影。

https://i.ibb.co/WckRgVb/file-3.jpg

现在我想隐藏阴影,但只在大标题上,当我向下滚动(正常大小)时,阴影应该出现。

这是代码,我现在正在使用:

extension UINavigationController {

    // Shado Style for Nav Bar
    func shadowStyle(largeTitle: Bool = false) {
        navigationBar.shadowImage = UIImage()
        navigationBar.layer.masksToBounds = false
        navigationBar.layer.shadowColor = UIColor(red:0.80, green:0.80, blue:0.80, alpha:1.0).cgColor
        navigationBar.layer.shadowOpacity = 0.7
        navigationBar.layer.shadowOffset = CGSize(width: 0, height: 2.0)
        navigationBar.layer.shadowRadius = 5

        if(largeTitle) {
            if #available(ios 11.0, *) {
                navigationItem.largeTitleDisplayMode = .always
                navigationBar.prefersLargeTitles = true
            }
        } else {
            if #available(iOS 11.0, *) {
                navigationItem.largeTitleDisplayMode = .never
                navigationBar.prefersLargeTitles = false
            }
        }
    }
}

我在ViewController中将其称为:

override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.shadowStyle(largeTitle: true)

    // other code
}

我的问题是,只有在显示大标题时,如何删除阴影?

答案

要在单个条上执行此操作,只需直接设置即可。

无论何时你想要,要更改所有条形,使用AppDelegate的外观代理在UINavigationBar中设置它,以便在加载第一个条形图之前启动它。

这里有一个例子,标题文字为蓝点的格鲁吉亚Bold 18点:

 let attrs = [
        NSAttributedString.Key.foregroundColor: UIColor.blue,
        NSAttributedString.Key.font: UIFont(name: "Georgia-Bold", size: 18)!
    ]

    UINavigationBar.appearance().titleTextAttributes = attrs
另一答案

检查这个布尔:self.navigationController?.navigationBar.prefersLargeTitles

override func viewWillAppear(_ animated: Bool) {
   if self.navigationController?.navigationBar.prefersLargeTitles {
        self.navigationController?.shadowStyle(largeTitle: true)
   }

   // other code

}
另一答案

现在我发现了自己。

我只需要根据导航栏的高度设置navigationBar.layer.shadowOpacitynavigationBar.frame.size.height

以上是关于如何在navigationBar上使用普通和大型标题的不同风格?的主要内容,如果未能解决你的问题,请参考以下文章

如何在IOS 11中为新的大型条设置渐变颜色的UINavigationbar?

latex里面标题上的角标星号如何显示为五角星?

iOS:如何在导航栏中与 NavigationBar Title 平行放置一个按钮?

Xamarin.iOS:如何将 NavigationBar 添加到视图

SQL为王:oracle标量子查询和表连接改写

如何在 iOS 7 中使用 NavigationBar 背景图像 44px 高度更改状态栏背景?