UICollectionViewFlowLayout不使用整数帧

时间:2013-02-26 20:44:03

标签: cocoa-touch ios6 uicollectionview

我最近开始使用UICollectionView,对UICollectionViewFlowLayout有点困惑。似乎计算集合视图中每个单元格的帧,每个项目之间的空间相等。这会导致某些单元格的帧具有小数位置,这会导致标签模糊和图像像素未对齐等等。

我很惊讶地发现在堆栈溢出时没有关于这个的问题,这让我觉得我做错了。我创建了一个测试项目,非常简单地演示了这个问题:

https://github.com/rmaz/BlurryCollectionView

这真的是标准行为吗?在我看来,这使得流程布局在没有子类化的情况下基本上无法使用。或者我错过了什么?

1 个答案:

答案 0 :(得分:8)

解决方法:子类UICollectionViewFlowLayout,覆盖UICollectionViewLayout的{​​{1}},并且每个布局属性都会使框架成为整数:

-layoutAttributesForElementsInRect:

注意:已修​​复iOS 7 - (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect { NSArray *allLayoutAttributes = [super layoutAttributesForElementsInRect:rect]; for (UICollectionViewLayoutAttributes *layoutAttributes in allLayoutAttributes) { layoutAttributes.frame = CGRectIntegral(layoutAttributes.frame); } return allLayoutAttributes; } 以始终对其单元格的帧使用整数帧。我建议保留iOS 6.x的修复程序,但有条件地弃用它适用于iOS 7及更高版本。

最佳, 圣拉斐尔