【问题标题】:Embedding a Collection View inside a Container View - extra white-space at top在容器视图中嵌入集合视图 - 顶部有额外的空白
【发布时间】:2016-07-22 00:00:14
【问题描述】:

我有一个使用 Nav Contoller 作为初始 VC 的应用程序,然后它有一个根 UIViewContoller,它在上半部分包含一个 UIView,在底部包含一个 UIContainerView。在 UIContanerView 中,我嵌入了一个工作 UICollectionView,其中包含与细节视图相连接的图像按钮。

问题是现在 UICollectionView 的顶部出现了空白。 鉴于这大约 64 像素高,它似乎是 44 像素导航栏 + 20 像素状态栏 = 的重影64.

如果我向上滚动,一切看起来都很好并且按预期工作,它还允许我向您展示我期望的布局在发布时的样子:

如果有帮助,下面是我的故事板的 sn-p:

【问题讨论】:

  • 自从我遇到这个问题以来已经有一段时间了,我不完全记得解决方案:-(。IIRC问题是容器视图位于导航视图内部并且操作系统正在尝试通过将内容向下移动导航视图的高度非常有帮助。如果我没记错的话,您可以检查的一件事是容器视图的“layoutMargins”。我想您会找到顶部边距设置,您可以尝试清除那个。
  • 谢谢,让我来一条线回答:automaticallyAdjustsScrollViewInsets = false

标签: ios swift uicollectionview uicontainerview


【解决方案1】:

是的,这可能是因为嵌入在容器视图中的子视图控制器给人的印象是,它是 UINavigationController 的直接子级,这反过来又使 collectionView 离开顶部 64 pt 插图。

要解决这个问题,在您的子视图控制器界面构建器中,取消标记调整滚动视图插入

这应该可以解决您的问题

更新

正如 Dan 建议的那样,我们也可以通过调用

以编程方式修复它
automaticallyAdjustsScrollViewInsets = false

在 UIViewController 的 viewDidLoad() 中

【讨论】:

  • 就是这样,并且与我从上面发布的链接@Scott Thompson 找到的答案相匹配。实际上,我将一行放在 viewDidLoad() 中,这样当我几个月后回来时,它就不会那么“隐藏”了……;o) automaticallyAdjustsScrollViewInsets = false
  • 似乎容器控制器和子控制器都必须取消选中才能使其工作。
  • 只有包含scrollView的控制器才需要!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 2016-06-17
相关资源
最近更新 更多