UICollectionViewFlowLayout不使用整体框架(UICollectionView

2019-08-17 05:10发布

我最近开始使用UICollectionView,并感到有点困惑的UICollectionViewFlowLayout。 这似乎是在集合视图的每个小区帧与每个项之间的相等空间中计算。 这会导致一些细胞的帧以具有分数位置,这将导致模糊的标签和未对准的图像中的像素等。

我很惊讶地发现,有关于这个堆栈溢出没有问题,虽然,这让我觉得我做错了什么。 我创建了演示该问题很简单的测试项目:

https://github.com/rmaz/BlurryCollectionView

这真的是标准的行为? 在我看来,这使得流布局基本不可用没有子。 还是我失去了一些东西?

Answer 1:

解决办法:子类UICollectionViewFlowLayout ,覆盖UICollectionViewLayout-layoutAttributesForElementsInRect:和每一个布局属性使框架积分:

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

注:适用于iOS 7 UICollectionViewFlowLayout已被固定,始终使用整体框架为它的细胞的帧。 我建议保持于iOS 6.x的修复,但有条件地贬低它的iOS 7及更高版本。

最好的,拉斐尔



文章来源: UICollectionViewFlowLayout doesn't use integral frames