UICollectionView 垂直间距约束显示白条 = 20 像素

Posted

技术标签:

【中文标题】UICollectionView 垂直间距约束显示白条 = 20 像素【英文标题】:UICollectionView Vertical Spacing Constraint shows white bar = 20 pixels 【发布时间】:2016-06-13 00:41:01 【问题描述】:

我正在尝试显示所有 100 个 4x25 UICell 按钮,但是当我在底部滚动到停止时,最后一行只显示了 4 个单元格的一半(想象一个正方形的下半部分没有显示)。我添加了约束,包括 20 像素的垂直间距约束。现在,最后一行 4 个单元格都是可见的,但我的屏幕有 20 像素约束可见为一个白条(我的屏幕的整个宽度和 20 个高度)。我实际上希望滚动从底部停止 20 像素,因为如果我不这样做看起来很奇怪。

我尝试将视图(这是我的 UICollectionView 的超级视图)设置为清除颜色但仍然没有,该栏实际上变成黑色。

这里有一些代码来展示我在布局方面的内容:

    UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
    flowLayout.sectionInset = UIEdgeInsetsMake(150, 20, 0, 20);
    [flowLayout setItemSize:CGSizeMake(55, 55)];
    [flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];

    [self.collectionView setCollectionViewLayout:flowLayout];
    self.collectionView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"MainScreen.png"]];

有什么想法吗?建议?我已经对建议的约束进行了重置。

【问题讨论】:

【参考方案1】:

您是否重置了 flowLayout.sectionInset ?我认为这个问题发生在这里:

flowLayout.sectionInset= UIEdgeInsetsMake(150, 20, 0, 20);

你能试试这个代码吗:

flowLayout.sectionInset= UIEdgeInsetsMake(150, 20, 0, 0);

在最后一行显示图像的一半,我认为您可以查看并重置 yourCollectionView.frame(请参阅它的 autoresizeLayout)。你可以试试这个代码:

yourCollectionView.frame = yourContentView.frame;
yourCollectionView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;

【讨论】:

以上是关于UICollectionView 垂直间距约束显示白条 = 20 像素的主要内容,如果未能解决你的问题,请参考以下文章

iOS:使用约束动画 UICollectionView 垂直扩展?

UICollectionView 流布局没有固定的行高

Collectionview固定单元格间距

UICollectionView 布局间距问题。单元格之间的空间太大

更改 CollectionView 单元格的垂直间距

UICollectionView 项目间距不是恒定的