我一直在尝试将 Apple Music 实现为推送 View Controller 的透明导航栏。网上有很多解决方案说把下面的代码放到viewDidLoad中:
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
但问题是它只适用于根 Controller ,例如带有项目列表的 UITableViewController。当我点击一个项目并打开它的详细信息时,我希望看到透明的导航栏,但在出现后它变成实心的(甚至不是半透明的)。即使设置 barTintColor 也无济于事。
我做错了什么?还是 iOS 11 中的已知问题?它曾经工作过...
最佳答案
我确认透明导航栏在 iOS 11 中不适用于推送的 View Controller ,而是显示为黑色,没有半透明的@screenshot。
首先,我已经提交了这个错误报告,最后 :) 我找到了一个快速的解决方法,即显示和关闭 UIViewcontroller 可以解决这个问题,如下所示:
if (self.navigationController!.viewControllers.count > 1) {
if #available(iOS 11.0, *) {
self.present(UIViewController(), animated: true, completion: {
self.dismiss(animated: false)
})
self.scrollView.contentInsetAdjustmentBehavior = .never
} else {
self.automaticallyAdjustsScrollViewInsets = false
}
self.extendedLayoutIncludesOpaqueBars = false
}
我在 viewWillAppear
中使用上面的代码,我的 UI 是在没有 Storyboard或 xib 的情况下以编程方式生成的,因此它可以无缝运行:)很高兴我得到了预期的结果@screenshot
关于推送的 ViewController 中的 iOS 11 UINavigationBar 透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47596100/