1

UICollectionView のすべてのセルを水平スクロールで 1 行に表示しようとしています。

このために、組み込みの UICollectionView クラスを使用していますが、次のコードで UICollectionViewFlowLayout のサブクラスを作成しました。

@implementation MemberCollectionViewFlowLayout

- (id)init {
    if ((self = [super init])) {
        self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
        self.minimumLineSpacing = 10000.0f;
    }
    return self;
}

- (CGSize)collectionViewContentSize
{

    NSArray *memberArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"currentGroupMembers"];
    return CGSizeMake([memberArray count]*50 , self.collectionView.frame.size.height);
}

@end

その結果、スクロール可能な行が表示されますが、行が画面よりも大きい場合は表示されません。コンテンサイズの高さを上げると、残りのセルが 2 行目に追加されていることがわかります。

すべてのセルが 1 行に並んでいることを確認するにはどうすればよいですか?

助けてくれて本当にありがとうございます

4

1 に答える 1

0

フロー レイアウトのドキュメントには、次のように書かれています。

水平スクロール グリッドの場合、この値は連続する列間の最小間隔を表します。

したがって、水平方向に巨大な値を追加して水平方向の寸法を大きくすると、設定したコンテンツ サイズよりもはるかに大きくなります。したがって、フロー レイアウトは次の行を開始しようとします。

おそらく、サブクラス化する必要はまったくありません。サブクラス化せずにフロー レイアウトのプロパティを設定し、コレクション ビューにコンテンツ サイズを任せることができます。ビューとスクロール方向の制約により、望ましい効果が得られるはずです。

于 2013-08-12T17:56:31.557 に答える