1. ホーム
  2. アイオス

[解決済み】UICollectionViewのセル間隔について

2022-04-12 18:06:04

質問

のセクションでセル間隔を設定するにはどうすればよいですか? UICollectionView ? プロパティがあることは知っています。 minimumInteritemSpacing 5.0に設定しましたが、5.0の間隔が表示されません。flowoutのデリゲートメソッドを実装しています。

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{

    return 5.0;
}

が、期待する結果を得ることができません。私は、最小の間隔が原因だと思います。最大スペーシングを設定する方法はないのでしょうか?

解決方法は?

私はトピックが古いことを知っているが、誰かがまだ正しい答えを必要とする場合に備えて、ここであなたが必要とするもの。

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

ここで、maxSpacingは任意の値を設定することができます。このトリックは、セル間のスペースがmaxSpacingと完全に等しくなることを保証するものです!