我最近开始使用UICollectionView,并感到有点困惑的UICollectionViewFlowLayout。 这似乎是在集合视图的每个小区帧与每个项之间的相等空间中计算。 这会导致一些细胞的帧以具有分数位置,这将导致模糊的标签和未对准的图像中的像素等。
我很惊讶地发现,有关于这个堆栈溢出没有问题,虽然,这让我觉得我做错了什么。 我创建了演示该问题很简单的测试项目:
https://github.com/rmaz/BlurryCollectionView
这真的是标准的行为? 在我看来,这使得流布局基本不可用没有子。 还是我失去了一些东西?
解决办法:子类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及更高版本。
最好的,拉斐尔