3

最近 UICollectionView を使い始めましたが、UICollectionViewFlowLayout について少し混乱しています。コレクション ビューの各セルのフレームは、各アイテム間に等間隔で計算されているように見えます。これにより、一部のセルのフレームの位置が分数になり、ラベルがぼやけたり、画像ピクセルがずれたりする原因となります。

しかし、スタックオーバーフローに関してこれについて疑問がないことに驚いており、何か間違ったことをしていると思います。問題を非常に簡単に示すテスト プロジェクトを作成しました。

https://github.com/rmaz/BlurryCollectionView

これは本当に標準的な動作ですか?これにより、サブクラス化なしではフローレイアウトが基本的に使用できなくなるように思えます。または、何か不足していますか?

4

1 に答える 1

8

回避策: subclass UICollectionViewFlowLayout、 override 、および for every layout 属性により、フレームが統合されますUICollectionViewLayout:-layoutAttributesForElementsInRect:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
    NSArray *allLayoutAttributes = [super layoutAttributesForElementsInRect:rect];
    for (UICollectionViewLayoutAttributes *layoutAttributes in allLayoutAttributes) {
        layoutAttributes.frame = CGRectIntegral(layoutAttributes.frame);
    }
    return allLayoutAttributes;
}

注: iOS 7UICollectionViewFlowLayoutは、セルのフレームに常に一体型フレームを使用するように修正されています。iOS 6.x の修正を保持することをお勧めしますが、iOS 7 以降では条件付きで非推奨とします。

ベスト、ラファエル

于 2013-03-01T02:53:54.050 に答える