我创建了一个简单的项目来测试如何使UINavigationBar透明化。在这个项目中,我有两个UIViewController。第一个视图控制器显示一个大按钮,将第二个视图控制器推入导航控制器。
第二个视图控制器是一个UIViewController,它包含一个UICollectioView(它不是一个UICollectionViewController)。
在app委托中,我将此代码写入 应用程序:didFinishLaunchingWithOptions
UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: .Default)
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
UINavigationBar.appearance().translucent = true
它就像第一个UIViewController的魅力(导航栏是透明的),但当我移动到另一个UIViewController(使用UICollectionView)时,导航栏不透明,当我回到之前的UIViewController仍然不透明!
有什么建议吗?
PS:为了清楚起见,我的预期结果是,即使我向上滚动并且它们在导航栏下方通过,我也希望看到单元格。我不知道我是否清楚。答案 0 :(得分:0)
由于我没有50个声誉但我无法评论这个问题,但我在Xcode中复制了你的项目,我发现没有错误。我有以下屏幕(请注意半透明导航栏):
要创建这些屏幕,请执行以下操作,以便可能出现问题:
这可能听起来很愚蠢但是在AppDelegate中你把代码放在了:
之前return true
语句?
答案 1 :(得分:0)
我花了24个小时来解决问题!这是一个愚蠢的坏约束! UICollectionView对Top Layout Guide有一个约束,而不是View of UIViewController!