カスタムUICollectionViewLayout
サブクラスの実装中に、この奇妙な動作が見つかりました。以外のサブクラスのメソッドを設定しましたcollectionViewContentSize
。すべてのセルが期待どおりに表示されましたが、contentView
長すぎました。本来あるべきものの約2倍に見えました。
正しい を取得するために、以下のメソッドを実装しましたcontentSize
。ただし、現在は期待値でprepareLayout
あり、ビューが 1 ピクセルスクロールするたびに呼び出されます。つまり、0,0 から 0,500 までスワイプすると、 prepareLayout
500 回呼び出されます。
collectionViewContentSize
それを引き起こす可能性があるのは私の何ですか?
- (CGSize)collectionViewContentSize {
UICollectionViewLayoutAttributes *leftAttributes = (UICollectionViewLayoutAttributes *)self.layoutInfo[@"segmentCell"][[NSIndexPath indexPathForItem:[self.collectionView numberOfItemsInSection:0]-1 inSection:0]];
UICollectionViewLayoutAttributes *rightAttributes = (UICollectionViewLayoutAttributes *)self.layoutInfo[@"segmentCell"][[NSIndexPath indexPathForItem:[self.collectionView numberOfItemsInSection:1]-1 inSection:1]];
float leftHeight = leftAttributes.frame.size.height + leftAttributes.frame.origin.y;
float rightHeight = rightAttributes.frame.size.height + rightAttributes.frame.origin.y;
float maxHeight = leftHeight > rightHeight ? leftHeight : rightHeight;
return CGSizeMake(self.collectionView.bounds.size.width, maxHeight);
}