私は現在、ちょっとしたカバーフローのような水平行が1つだけの UICollectionView をxcodeでテストしています。基本的に、セル用に独自のカスタム セル クラスと xib ファイルがあり、各セルに xib を使用して別の UIView を追加しています。理由を知りたい場合は、セルにさまざまな UIView を追加できるようにするためです。現在、1つだけ追加しています。
編集 UICollectionViewCell のラインレイアウトの作成に関する WWDC 2012 ビデオに従いましたが、1 つの違いがあります。中央のセルが大きくなる代わりに、他のすべてのセルが小さくなります。
以下のすべてが私の質問にとって新しいものです。
-(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *array = [super layoutAttributesForElementsInRect:rect];
CGRect visibleRect;
visibleRect.origin = self.collectionView.contentOffset;
visibleRect.size = self.collectionView.bounds.size;
for (UICollectionViewLayoutAttributes *attributes in array){
if (CGRectIntersectsRect(attributes.frame, rect)) {
CGFloat distance = CGRectGetMidX(visibleRect) - attributes.center.x;
CGFloat normalizedDistance = distance / ACTIVE_DISTANCE;
if (ABS(distance) < ACTIVE_DISTANCE) {
//THIS WOULD MAKE THE MIDDLE BIGGER
//CGFloat zoom = 1 + ZOOM_FACTOR *(1- ABS(normalizedDistance));
//attributes.transform3D = CATransform3DMakeScale(zoom, zoom, 1.0);
//attributes.zIndex = round(zoom);
} else {
//THIS MAKES ALL THE OTHERS NOT IN THE RECT SMALLER
CGFloat zoom = 1 + ZOOM_FACTOR *(1- ABS(normalizedDistance));
attributes.transform3D = CATransform3DMakeScale(zoom, zoom, 1.0);
attributes.zIndex = round(zoom);
}
}
}
return array;
}
問題は添付の画像で確認できます。
ピンク = コレクション ビューのサイズ
茶色 = セルサイズ
緑 = セルのコンテンツ サイズと、コンテンツ サイズに添付された xib。
私が抱えている問題は、レイアウトにあると思います。Sell がデキューされると、上記のコードによってサイズが小さくなります。その後、再利用すると、CELL は再び大きくなりますが、コンテンツ ビューは大きくなりません。
コンテンツ ビューのフレームを手動で設定するのにうんざりしていますが、何もしません。
更新 1: これは、セル コンテンツ ビューに xib を追加した場合にも発生します。コンテンツビューにサブビューがない場合は問題ありません
UPDate 2: セルのサブビュー、私の xib のサイズが変更されていないようです。フレームサイズを手動で変更しようとしましたが、これが役立つ唯一の場所は、ハックのように感じるセル drawrect メソッドです。