【问题标题】:Set navigation bar separator color for screen transition in Swift (iOS 13/14)?在 Swift(iOS 13/14)中为屏幕转换设置导航栏分隔符颜色?
【发布时间】:2021-02-12 15:53:46
【问题描述】:

我有 2 个屏幕,带有一个通用导航控制器和一个通用导航栏。第一个屏幕应该没有分隔符,第二个屏幕应该有一个自定义颜色的分隔符。

我试过的代码:

1)

navigationController?.navigationBar.shadowImage = ...//some image with an appropriate color
let appearance = UINavigationBarAppearance()
appearance.shadowImage = navBarSeparatorColor.as1ptImage()
navigationController?.navigationBar.scrollEdgeAppearance = appearance

似乎第一段代码适用于 ios 12,仅此而已。没有适用于 iOS 13 或 14。

注意:有一些类似的问题,但他们的“解决方案”不适用于 iOS 13,并且根本没有适用于 iOS 14 的问题。

【问题讨论】:

    标签: ios uinavigationcontroller uinavigationbar shadow uinavigationbarappearance


    【解决方案1】:

    我觉得在iOS 13上,需要在navigationBar里面设置外观对象,例如:

    class FirstViewController: UIViewController {
    
        override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            navigationController?.navigationBar.standardAppearance.shadowColor = .clear
        }
    
    }
    
    class SecondViewController: UIViewController {
    
        override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            navigationController?.navigationBar.standardAppearance.shadowColor = .red
        }
    
    }
    

    请注意还有其他外观:compactAppearancescrollEdgeAppearance。除了shadowColor,你也可以设置shadowImage

    【讨论】:

    • 谢谢,已经试过了。问题是在 iOS 13/14 上有一条永久的黑线。如果您将shadowColor 设置为任何具有透明度的颜色(例如clear),您将看到它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多