iOS 11 UINavigationBar推送ViewController中的透明度

时间:2017-12-01 15:01:16

标签: ios swift uinavigationcontroller uinavigationbar ios11

我一直在努力为推送视图控制器实现Apple Music,就像透明导航栏一样。互联网上有很多解决方案,将下面的代码放入viewDidLoad:

___cxa_guard_acquire

但问题是它只适用于根控制器,例如带有项列表的UITableViewController。当我点击一个项目并打开它的细节时,我希望看到透明导航栏,但在出现后它变得坚固(甚至不是半透明的)。即使设置barTintColor也无济于事。

我做错了什么?或者它是iOS 11中的已知问题?以前它曾经工作过......

1 个答案:

答案 0 :(得分:2)

我确认透明导航栏在iOS 11中不适用于推送的视图控制器,而是只显示黑色而没有半透明的@screenshot。

enter image description here

首先,我已经提交了这个错误报告,最后:)我找到了一个快速的解决方法,提出和解雇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使用上面的代码,我的用户界面是以编程方式生成的,没有storyboard或xib,所以它无缝地工作:)很高兴我得到预期的结果@screenshot

enter image description here