我在这个问题上苦苦挣扎了几天。
我有一个视图控制器,该控件应将当前导航栏设置为透明。就像“艺术家”页面上的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:
如何解决此问题?有人遇到过类似的事情吗?如果您无法解决问题,您如何解决该问题?
谢谢。