UINavigation Bar 在用户导航更深时变为透明

UINavigation Bar to turn transparent as user navigates deeper

在现在的许多应用程序中,NavigationController 中的某些视图(配置文件页面等)具有透明的导航栏是非常流行的。你可以在模型中看到我的意思。我正在努力实现这种效果,但我很难弄清楚如何做到这一点。 比方说,我在 UITableView 中选择了一个项目,然后我将转到 UIScrollView。我希望滚动视图像在普通 UINavigationBar 中一样显示 return 按钮,但不同之处在于导航栏是不可见的。 我想保留导航栏逻辑,因为可以从带有透明栏的视图中更深入地挖掘导航层次结构。 完成类似任务的最佳方法是什么?

将以下内容添加到 viewDidLoad()

navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = true

这将持续到您通过导航层次结构推送的其他视图,因此请确保更改它们的 viewDidAppear() 或加载。或者您可以在当前的视图控制器中通过删除 viewWillDisappear() 中的透明度来解决这个问题。

这将保留导航项,您可以照常更改它们的颜色。

navigationController?.navigationBar.tintColor = UIColor.lightGray