今天修改bug,首页的UI问题。
解决方法。
重写UICollectionViewFlowLayout
过程:
collectionView间隙与设置不符,这个bug一开始的思路是cell的大小itemSize和section的缩进sectionInset共同决定,还有创建collectionView时- (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout
UICollectionViewLayout
这个类是用来控制cell的大小和cell之间的间距的。
里面是可以设置一些属性的包括itemSize,sectionInset这两个属性一般都会写在代理方法里面。 还有minimumLineSpacing,minimumInteritemSpacing这两个相对陌生一点,不过试了试只能设置行间距,列间距的最小值。通过它不能得到想要的结果。 上面的四个属性值都可以直接设置layout,但是在UICollectionViewDelegateFlowLayout代理方法里都可以实现的,而且更加的灵活。
虽然知道问题关键在layout里但是还是没有找到解决方法,而且主要是机型不同,然后尺寸不一样,导致部分机型会出现cell间隔与设置不符,估计因为flowLayout布局的时候,可能因为屏幕出现小数然后他会自动处理。由于这样的机制,然后导致问题出现。
然后网上搜索找到了相关的帖子。
ios开发——解决UICollectionView的cell间距与设置不符问题
基本是解开了我的疑惑。重写了-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect
这个方法 对数组里的UICollectionViewLayoutAttributes进行了定制,然后可以得到自己想要的布局。看了看 里面还有很多其他的属性,应该除了改变布局还有很多其他用处。collectVIew遇到问题 可以再研究研究