私は基本的に私が望むことを行うUICollectionViewFlowLayoutを持っています.1つのことを除いて-水平にスクロールし、ページングを有効にしたときのUICollectionViewCellsの正しい配置です。
私が基本的に欲しいのはこれです-複数のページをページごとにスクロールします:
ここで1を参照してください: UICollectionView Pictures
私の問題は、常にこの同じレイアウトで複数のセクションがあることですが、右にスクロールすると空になり(背景色のみ)、最初のページに戻ると(上のページのように)、奇妙な結果:
上のリンクの 2. を参照してください。
どうやらインデックス パスが何らかの形で混同されているようです。その理由は本当にわかりません。
この例では、私の collectionView:numberOfItemsInSection: メソッドは常に「5」を返し、私の numberOfSectionsInCollectionView: は「2」を返します。私はこれで UICollectionViewFlowLayout をサブクラス化しました:
static CGRect elementLayout[] = {
{20, 20, 649.333333, 294},
{20, 334, 314.666666, 294},
{688, 20.0, 314.666666, 294},
{354.666666, 334, 314.666666, 294},
{688, 334, 314.666666, 294},
};
-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *attributes = [super layoutAttributesForElementsInRect:rect];
NSMutableArray *newAttributes = [NSMutableArray array];
for(int i = 0; i < [attributes count]; i++)
{
UICollectionViewLayoutAttributes* attrs = attributes[i];
attrs.frame = elementLayout[i];
[newAttributes addObject:attrs];
}
return newAttributes;
}
しかし、サブクラス化せず、UICollectionViewFlowLayout からの標準のデリゲート呼び出しで作成しようとすると、次のようになります。
上のリンクの 3. を参照してください。
これは正しく右にスクロールしますが、レイアウトが間違っています。私が期待したのは、NSIndexPath [0, 1] を持つセルが「大きな」セルの下ではなく右側にあることです。しかし、それでも、NSIndexPath [0, 1] のセルを図のように配置する必要があります。
ここで何か不足していますか?