uicollectionview 删除顶部填充

问题描述 投票:0回答:6

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

这就是它在模拟器中的样子:

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

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)
}

如何去掉顶部填充物?

ios iphone swift uicollectionview
6个回答
15
投票

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

方法1:通过从

dimensions
正确设置collectionView
StoryBoard
来解决问题的自然方法。

方法2

**Updated**

您可以在

collection frame
viewDidLayoutSubviews
 中验证 
viewWillLayoutSubviews

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

方法 3:您可以从您的

Adjust Scroll View Insets
StoryBoard
Attributes Inspector

方法 4:您可以通过调整 CollectionView

contentInset
以编程方式解决此问题。

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

顶部填充 5 的输出:

顶部填充 44 的输出:

顶部填充 64 的输出:


5
投票

还有另一种方法可以解决此问题,即选择 collectionView ->scrollView Content Insets ->“自动”为“从不”。

默认情况下,scrollView Content Insets 值为“自动”。请检查下面的图片。

有关更多详细信息,请检查:UIScrollView.ContentInsetAdjustmentBehavior

https://developer.apple.com/documentation/uikit/uiscrollview/2902261-contentinsetadjustmentbehavior


3
投票

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


2
投票

通过取消选中 IB > 属性检查器中的

Translucent
复选框,使您的 Navigation Controller > NavigationBar 半透明,它将起作用。


0
投票

我也遇到了同样的问题,我用一种完全荒谬的解决方案解决了它。

我的collectionView包含几个没有标题和项目单元格的部分。

截面插入的顶部、底部插入值分别为 10。 所以每个空部分的高度为 20 像素。

我有 4 个空白部分,因此集合视图中有 80 个上边距。

如果上述解决方案均无效,希望您也检查一下。


0
投票

UICollectionView
的内容插入设置为零后,如下所示:

collectionView.contentInset = .zero

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

试试这个:

collectionView.contentInsetAdjustmentBehavior = .never
© www.soinside.com 2019 - 2024. All rights reserved.