我目前有一个项目设置,在注册期间我使用UINavigationController来管理视图控制器,作为设计的一部分,我使用以下代码将UINavigationBar设置为透明:
let navBar: UINavigationBar! = self.navigationController?.navigationBar
navBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
navBar.shadowImage = UIImage()
navBar.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
navBar.tintColor = UIColor.white
navBar.barTintColor = UIColor.clear
这允许我使用导航控制器的层次来管理向后/向前移动,并且工作正常,除了当我显示视图控制器时,我拥有的任何视图(通过Autolayout设置)执行“跳跃”动作进入正确的位置(就像this question的视频https://vid.me/9kB5)。一些搜索让我尝试了以下两种解决方案
1。)取消选中扩展边 - 在我的情景板视图控制器的顶栏下面 2.)将导航栏的半透明度设置为false
navBar.isTranslucent = false
这解决了跳跃运动并导致视图在加载时就位,但问题是导航栏现在变成了barTintColor(对于UIColor.clear最终变为黑色)。看来我无法同时保持透明度和半透明度。 Stack上的许多类似问题都有导航栏,设置颜色并且不透明。
我想到的下一个方法是我必须摆脱UINavigationController,而是在我的每个注册视图控制器上实现后退按钮,但我希望尝试使用导航控制器来解决这个问题。
是否可以将UINavigationBar的半透明度设置为false但保持透明度?
答案 0 :(得分:0)
尝试更改“alpha”属性。确保您使用导航栏执行的所有操作都在主线程上执行。
解决方案2:您可以为导航栏背景设置特定的UIImage。