UICollectionView

时间:2016-03-28 11:20:21

标签: ios swift uiviewcontroller uicollectionview uinavigationbar

我创建了一个简单的项目来测试如何使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:为了清楚起见,我的预期结果是,即使我向上滚动并且它们在导航栏下方通过,我也希望看到单元格。我不知道我是否清楚。

Storyboard

2 个答案:

答案 0 :(得分:0)

由于我没有50个声誉但我无法评论这个问题,但我在Xcode中复制了你的项目,我发现没有错误。我有以下屏幕(请注意半透明导航栏):

First View Controller

Second View Controller

要创建这些屏幕,请执行以下操作,以便可能出现问题:

  • 将代码添加到AppDelegate
  • 在NavigationController中嵌入FirstViewController
  • 添加SecondViewController
  • 向FirstViewController添加按钮
  • 在'按钮'之间添加segue和SecondViewController
  • 将CollectionView添加到SecondViewController
  • 将约束添加到'按钮'和' CollectionView'

这可能听起来很愚蠢但是在AppDelegate中你把代码放在了:

之前
return true

语句?

答案 1 :(得分:0)

我花了24个小时来解决问题!这是一个愚蠢的坏约束! UICollectionView对Top Layout Guide有一个约束,而不是View of UIViewController!