处于透明状态的大型UINavigationBar无法返回默认状态

时间:2018-08-05 10:42:40

标签: ios swift uinavigationbar

我在这个问题上苦苦挣扎了几天。

我有一个视图控制器,该控件应将当前导航栏设置为透明。就像“艺术家”页面上的Apple Music应用一样。我已经可以将它与真正让人感觉很棘手的东西一起使用了。

第一版

在viewWillAppear上

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

self.navigationController?.setNavigationBarHidden(true, animated: animated);

在viewDidAppear上,我只是再次为导航栏设置动画

self.navigationController?.setNavigationBarHidden(false, animated: true);

然后,当我们离开时,在viewWillDisappear上显示

UIView.animate(withDuration: 0.25, delay: 0.0, options: [], animations: {
    self.navigationController?.navigationBar.alpha = 0
}, completion: { (finished: Bool) in
    self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
    self.navigationController?.navigationBar.shadowImage = nil
    self.navigationController?.navigationBar.isTranslucent = true

    // force a redraw of the navigation bar
    self.navigationController?.isNavigationBarHidden = true;
    self.navigationController?.isNavigationBarHidden = false;

    self.navigationController?.setNavigationBarHidden(false, animated: true);
})

这很好,直到我打开大标题为止。

然后,我尝试使用transitionCoordinator

第二版

在viewWillAppear上

self.transitionCoordinator?.animate(alongsideTransition: { context in
    self.navigationController?.navigationBar.alpha = 0
}, completion: nil)

self.navigationController?.setNavigationBarHidden(true, animated: animated);

viewWillDisappear上,将alpha改回1基本上是相同的。

但是问题仍然存在,大型导航栏保持透明,小的导航栏似乎可以正常工作。

以下是情况的GIF:

Gif transparent navigation bar issue

问题

如何解决此问题?有人遇到过类似的事情吗?如果您无法解决问题,您如何解决该问题?

谢谢。

0 个答案:

没有答案