0

我有 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 的问题。

4

1 回答 1

0

我认为在 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

于 2020-10-30T08:00:59.143 回答