7

iPadアプリケーションUICollectionViewでフローレイアウトを使用しています。幅と高さが異なるセルがあります。コレクションビューのレイアウトとしてのサブクラスを使用すると、セル間のギャップが表示されます。UICollectionViewFlowLayout

列に大きなセルがある場合、その列のグリッドと小さなセルが列のその大きなセルの中央にレンダリングされます。セルをしっかりと包むためのより良い方法はありますか?

水平スクロールを使用しています。メソッドを使ってみlayoutAttributesForElementsInRect:ましたが、うまくいきませんでした。

layoutAttributesForElementsInRect:誰かが方法や他の方法で同じようなことをしたかどうか教えてください...

添付画像をご覧ください。同じ種類の解決策が必要ですここに画像の説明を入力してください

前もって感謝します...

4

2 に答える 2

1

このように使用します

UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];

layout.minimumInteritemSpacing = 0;
layout.minimumLineSpacing = 2;
于 2013-12-21T13:09:18.783 に答える
0

UICollectionViewFlowLayoutをサブクラス化し、layoutAttributesForItemAtIndexPath:メソッドとlayoutAttributesForElementsInRect:メソッドの両方で1つのメソッドを呼び出しました

setLineAttributes:(UICollectionViewLayoutAttributes *)attributes visibleRect:(CGRect)visibleRect:

を含む:

if (attributes.indexPath.item == 0 || attributes.indexPath.item == 1 || attributes.indexPath.item == 2) {
    CGRect f = attributes.frame;
    f.origin.x = 0;
    attributes.frame = f;
} else {
    NSIndexPath *ipPrev = [NSIndexPath indexPathForItem:attributes.indexPath.item - 3 inSection:attributes.indexPath.section];
    CGRect fPrev = [self layoutAttributesForItemAtIndexPath:ipPrev].frame;
    CGFloat rightPrev = fPrev.origin.x + fPrev.size.width + 10;
    if (attributes.frame.origin.x <= rightPrev) 
        return;

    CGRect f = attributes.frame;
    f.origin.x = rightPrev;
    attributes.frame = f;
}
于 2013-01-12T00:57:12.253 に答える