为了账号安全,请及时绑定邮箱和手机立即绑定

UICollectionView中的单元间距

UICollectionView中的单元间距

iOS
烙印99 2019-08-03 07:02:09
UICollectionView中的单元间距如何在UICollectionView?我知道有一项财产minimumInteritemSpacing我已将其设置为5.0,但间距仍未出现5.0。我已经实现了流出委托方法。- (CGFloat)collectionView:(UICollectionView *)collectionView layout: (UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{     return 5.0;}不过,我并没有达到预期的效果。我认为这是最小间距。我没有办法设定最大间距吗?
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我知道这个话题已经过时了,但是如果有人还需要正确的答案的话,你需要的是:

  1. 覆盖标准流布局。
  2. 添加这样的实现:

    - (NSArray *) layoutAttributesForElementsInRect:(CGRect)rect {
        NSArray *answer = [super layoutAttributesForElementsInRect:rect];
    
        for(int i = 1; i < [answer count]; ++i) {
            UICollectionViewLayoutAttributes *currentLayoutAttributes = answer[i];
            UICollectionViewLayoutAttributes *prevLayoutAttributes = answer[i - 1];
            NSInteger maximumSpacing = 4;
            NSInteger origin = CGRectGetMaxX(prevLayoutAttributes.frame);
    
            if(origin + maximumSpacing + currentLayoutAttributes.frame.size.width < self.collectionViewContentSize.width) {
                CGRect frame = currentLayoutAttributes.frame;
                frame.origin.x = origin + maximumSpacing;
                currentLayoutAttributes.frame = frame;
            }
        }
        return answer;}

最大空间可以设置为任何你喜欢的值。这个技巧保证细胞之间的空间完全相等于最大化空间!



查看完整回答
反对 回复 2019-08-05
?
三国纷争

TA贡献1804条经验 获得超7个赞

使用水平流布局,我还得到了细胞之间的10点间距。要删除我需要设置的间距minimumLineSpacing以及minimumInterItemSpacing降到零。

UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init];
flow.itemSize = CGSizeMake(cellWidth, cellHeight);
flow.scrollDirection = UICollectionViewScrollDirectionHorizontal;flow.minimumInteritemSpacing = 0;flow.minimumLineSpacing = 0;

此外,如果所有单元格大小相同,则直接在流布局上设置属性比使用委托方法更简单、更有效。




查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 1629 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信