UICollectionView的item都是从左到右布局的,如果项目需求是从右到左哪该如何布局呢?我现在的项目就遇到这样一个需求,从网上搜索的答案都是:
//in viewDidLoad
YourCollectionView.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
//in cellForItemAtIndexPath
cell.transform = CGAffineTransform(scaleX: -1.0, y: 1.0)
这种方法是可以的,如果数据是写死的,就可以用这种方法,但是如果item的数据源是变化就出现一个问题,item显示的字体翻转了,上下左右翻转,这个就是个很大的bug,无法消除。后来的在朋友的推荐下发现github有个大神已经实现了封装,是对UICollectionViewFlowLayout的封装,方法简单。下面是github的链接:
[https://github.com/mokagio/UICollectionViewRightAlignedLayout]
import "UICollectionViewLeftAlignedLayout.h"
#import "UICollectionViewRightAlignedLayout.h"
这两个类库都是他写的,从字面意思也可以明白,一个是从左到右的布局,一个是从右到左的布局。
下面是从右到左的代码示例:
UICollectionViewRightAlignedLayout *layout = [[UICollectionViewRightAlignedLayout alloc] init]; [layout setScrollDirection:UICollectionViewScrollDirectionVertical];
layout.minimumLineSpacing = 3;
layout.minimumInteritemSpacing = 3;
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
此方案不存在上述文字翻转的bug,完美实现从右到左的布局。
网友评论