天天看點

UICollectionView實作清單,有'非法'間距的原因

今天用CollectionView實作的清單效果不理想,一直不知道問題出現在那裡

UICollectionView實作清單,有'非法'間距的原因

有間距,但不屬于cell的高度

改變下面2個方面也不行:

//定義每個UICollectionViewCell 的大小

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{

CGSize size = CGSizeMake(80,80);

return size;

//定義每個Section 的上左下右的四邊間距

-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section

{

return UIEdgeInsetsMake(15, 15, 5, 15);//分别為上、左、下、右

}

最後才明白,那個間距是cell之間的間距(通過設定背景色發現的-.-),要另外設定:

//這個是兩行之間的間距(上下cell間距)

 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section;

//這個方法是兩個之間的間距(同一行cell的間距)

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;

也可以用在這個layout設定為0:

UICollectionViewFlowLayout* layout = [[UICollectionViewFlowLayout alloc]init];

layout.minimumLineSpacing = 0.0f;

最後實作效果,至于原理,為什麼蘋果會自動給間距呢?我了解是因為,collection本來就是用來做一個分視圖的效果的,是以預設留20的間距吧。(因為要實作 一個流水式的熱點關鍵字布局,是以用collectionView,合理嗎?求指點)

UICollectionView實作清單,有'非法'間距的原因

沒有間距的效果

- 如果有什麼疑問,可以在評論區一起讨論;

- 如果有什麼不正确的地方,歡迎指導!

> 注:本文首發于

iHTCboy's blog

,如若轉載,請注明來源。