Swift 使导航栏透明,并在滚动iOS 13时将其更改为不透明

Swift 使导航栏透明,并在滚动iOS 13时将其更改为不透明,swift,uinavigationbar,ios13,Swift,Uinavigationbar,Ios13,我正在处理包含UIScrollView的UIViewController,它是视图顶部的约束,就像这样 为了设置导航栏的透明度,我使用以下功能: func makeTransparentNavigationBar() { let navBarAppearance = UINavigationBarAppearance() navBarAppearance.configureWithTransparentBackground() navBarAppearance

我正在处理包含UIScrollView的UIViewController,它是视图顶部的约束,就像这样

为了设置导航栏的透明度,我使用以下功能:

func makeTransparentNavigationBar() {
    let navBarAppearance = UINavigationBarAppearance()
    
    navBarAppearance.configureWithTransparentBackground()
    navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.navigationBarText]
    navBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.navigationBarText]
    navBarAppearance.backgroundColor = UIColor.navigationBarBackground.withAlphaComponent(0)
    
    navigationController?.navigationBar.standardAppearance = navBarAppearance
    navigationController?.navigationBar.scrollEdgeAppearance = navBarAppearance
}
但是,当我向上滚动到某一点时,我希望将其设置为白色不透明,以便可以向导航标题添加一些文本。

我有下面的功能来制作一个不透明的导航栏

func makeSolidtNavigationBar() {
    let navBarAppearance = UINavigationBarAppearance()
    
    navBarAppearance.configureWithOpaqueBackground()
    navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.navigationBarText]
    navBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.navigationBarText]
    navBarAppearance.backgroundColor = UIColor.navigationBarBackground.withAlphaComponent(1)
    
    navigationController?.navigationBar.standardAppearance = navBarAppearance
    navigationController?.navigationBar.scrollEdgeAppearance = navBarAppearance
}
看起来是这样的:

我面临的问题是,我不能一个接一个地调用它们:如果我在我的视图中调用makeSolidtNavigationBar(),当我调用makeTransparentNavigationBar()时,它就不起作用,反之亦然

有什么想法吗


提前感谢您

您可以使用LTNavigationBar框架您最终找到答案了吗?