0

大きな UICollectionViewCell (明らかに UICollectionView の高さの 2 倍以上) が特定のスクロール オフセットで消え、特定のスクロール オフセットの後に再表示されるという同じ問題が発生しています。

UICollectionViewをサブクラス化し、カスタム アクションを実行する@JonathanCichon ソリューションを実装しました_visibleBounds(プライベート API であることはわかっていますが、Apple Store に送信する必要はありません)。

ここで私のカスタムコレクションビュー:

#import "CollectionView.h"

@interface UICollectionView ()

- (CGRect)_visibleBounds;

@end

@implementation CollectionView

- (CGRect)_visibleBounds
{
    CGRect rect = [super _visibleBounds];
    rect.size.height = [self heightOfLargestVisibleCell];
    return rect;
}

- (CGFloat)heightOfLargestVisibleCell
{
    // get current screen height depending on orientation
    CGFloat screenSize = [self currentScreenHeight];

    CGFloat largestCell = 0;

    NSArray *visibleCells = self.visibleCells;

    // get the largest height between visibleCells
    for (UITableViewCell *c in visibleCells)
    {
        CGFloat h = c.frame.size.height;
        largestCell = h > largestCell ? h : largestCell;
    }

    // return higher value between screen height and higher visible cell height
    return MAX(largestCell, screenSize);
}

これは機能し、スクロールしても消えなくなりましたが、まだ問題があります。スクロール位置が大きなセルの真ん中にあるときに実行すると、以前と同じように消えます...データをリロードした後、戻るreloadDataことに気付きました(私の方法)、それは私の画面の高さを取りますが、画面の高さ<現在の表示セルの高さであるため、これは表示されません...visibleCellsnilheightOfLargestVisibleCell_visibleBounds

誰かがすでにこの問題に直面していますか?

事前にThx

4

1 に答える 1