6

サブクラス化しUICollectionViewLayoutました。ここまでは順調ですね。
ただし、画面よりも広いセルがいくつかあり、スクロール中に消えることがあります。さらにスクロールすると、魔法のようにあるべき場所に再表示されます。コードをお見せできますが、90% のケースで動作するので問題はないと思います。しかし、非常に大きなセル (画面サイズの 2 倍以上) が消えることがあります。

NSMutableArray* attributes = [NSMutableArray array];
for (int section=0; section < [[self collectionView] numberOfSections]; section++) {
    [attributes addObject:[self layoutAttributesForSupplementaryViewOfKind:UICollectionElementKindSectionHeader atIndexPath:[NSIndexPath indexPathForItem:0 inSection:section]]];
        for (int row=0; row < [[self collectionView] numberOfItemsInSection:section]; row++) {
            NSIndexPath* indexPath = [NSIndexPath indexPathForItem:row inSection:section];
            [attributes addObject:[self layoutAttributesForItemAtIndexPath:indexPath]];
        }
 }
 return attributes;

私もこれらの投稿をしました: UICollectionView のセルが消え、セルがまだ表示されている間に UICollectionView の大きなセルが削除されます ただし、解決策は言及されていません。誰でもこれで私を助けることができますか? 問題はApple側にあるのでしょうか?もしそうなら、それを自分で解決するために私にできることはありますか?

4

2 に答える 2

5

申し訳ありませんが、これは UICollectionView の実際のバグであると確信しています。私は数週間前にこれとまったく同じことに遭遇しました。私はバグを実証するための小さなプログラムを作成し、Apple に RADAR を提出しましたが、彼らがそれを修正する予定があるかどうか、または予定があるかどうかについての連絡はありません。私が考えることができる最善の回避策 (警告: 私はまだこの回避策を実装していません) は、レイアウト属性が画面の端から非常に離れていることに気付くことです。意図的にセル属性の境界を変更して、わずかにオフになるようにします。おそらく、そのオフセット (実際の境界から切り取った量) を layoutAttributes の追加のカスタム フィールドとして保存することで、セルがコンテンツを正しく描画することを認識できるようになります。これはひどいハックのように感じますが、うまくいくはずです。

于 2013-02-19T18:36:10.210 に答える
0

-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rectメソッドが呼び出され、四角形がセルの一部である場合に、このセルの正しい属性オブジェクトを返しますか?

于 2012-12-20T13:35:09.547 に答える