ios uicollectionview删除顶部填充




iphone swift (3)

我有一个UICollectionView,它是整个视图,但它位于“视图”内(它不是UICollectionViewController)。 将单元格添加到此集合视图会在故事板中按以下顺序显示它:

这是它在模拟器中的外观:

我不明白如何摆脱这种观点。 对于集合视图,Storyboard Size Inspector中的所有insets都为零。 只是为了确定,我还有以下代码:

override func viewWillLayoutSubviews() {
    let layout = self.collectionViewProducts.collectionViewLayout as! UICollectionViewFlowLayout

    let containerWidth = UIScreen.main.bounds.size.width - 40.0
    let itemWidth = (containerWidth / 3.0)
    let itemHeight = (itemWidth / 0.75) + 30

    layout.sectionInset = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)

    layout.itemSize = CGSize(width: itemWidth, height: itemHeight)
}

如何摆脱顶部填充?


Answer #1

您可以通过考虑以下方法之一来修复顶部填充问题。

方法1 :通过从 StoryBoard 正确设置collectionView dimensions 来自然地解决您的问题。

方法2 **Updated**

您可以在 viewDidLayoutSubviewsviewWillLayoutSubviews 验证 collection frame

  override func viewDidLayoutSubviews() {
     collectionView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
}

方法3 :您可以从 StoryBoard Attributes Inspector Adjust Scroll View Insets

方法4 :您可以通过调整CollectionView contentInset 编程方式解决此问题。

collectionView.contentInset = UIEdgeInsets(top: **Any Value**, left: 0, bottom: 0, right: 0)

顶部填充5的输出:

顶部填充44的输出:

顶部填充64的输出:


Answer #2

我想因为这个viewController嵌入在navigationController中。 让我们在故事板中选择此viewController并取消选中 Adjust Scroll View Insets


Answer #3

通过取消选中IB> Attribute Inspector中的 半透明 复选框,使您的 Navigation Controller > NavigationBar 半透明,它将起作用。







uicollectionview