プリセット、
私はcollectionViewFlowLayoutサブクラスを持っています
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {
return YES;
}
- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *arr = [super layoutAttributesForElementsInRect:rect];
BBLog(@"ARRA:%@", arr);
for (UICollectionViewLayoutAttributes *attr in arr) {
if (CGAffineTransformIsIdentity(attr.transform)) {
attr.transform = CGAffineTransformMakeRotation((CGFloat)M_PI);
}
}
return arr;
}
CollectionViewを回転させて逆さまにスクロール
self.collectionView.transform = CGAffineTransformMakeRotation((CGFloat)M_PI);
ただし、サブクラス化せずにネイティブ collectionViewFlowLayout を使用しても、git this エラー
問題
チャットに 2 件以上のメッセージがありますが、一番下 (通常は一番上) にスクロールすると 2 番目の項目が消えます。
指定された rect の layoutAttributesForElementsInRect は、2 つの indexPath 0-0 と 0-1 の 2 つの属性を返しますが、デリゲート メソッド
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
indexPath 0-0 に対してのみ呼び出されます
画像はこちら
更新 なぜそれが起こるのかを見つけました-この行コード
attr.transform = CGAffineTransformMakeRotation((CGFloat)M_PI);
変換を削除するかどうかを確認します