Tar*_*ark 3 cocoa-touch ios6 uicollectionview
我最近开始使用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;
}
Run Code Online (Sandbox Code Playgroud)
注意:iOS 7 UICollectionViewFlowLayout已被修复为始终使用其单元框架的整体框架.我建议保留iOS 6.x的修复程序,但有条件地弃用iOS 7及更高版本.
最好,拉斐尔
| 归档时间: |
|
| 查看次数: |
774 次 |
| 最近记录: |