为SwiftiOS 13/14中的屏幕过渡设置导航栏分隔符颜色吗?

问题描述

我有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 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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...