我有一个从instagram获取数据的集合视图。
CollectionView
通过Outlet连接:
@property (weak, nonatomic) IBOutlet UICollectionView *myCollectionView;
我是如何填充细胞的:
-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
myCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"myCell" forIndexPath:indexPath];
if(!cell){
cell = (myCell *)[myCell cell];
}
[self customizeLayoutFlow];
cell.photo = self.photos[indexPath.row];
return cell;
}
-(void)customizeLayoutFlow{
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
self.myCollectionView.collectionViewLayout = layout;
layout.itemSize = CGSizeMake(106.0, 106.0);
layout.minimumInteritemSpacing = 1.0;
layout.minimumLineSpacing = 1.0;
}
在你提出问题之前,我想补充说,没有customizeLayoutFlow
方法,单元格会完美加载。但我需要使用UICollectionViewFlowLayout
自定义其布局。出于某种原因,我得到了一个指向self.myCollectionView.collectionViewLayout = layout;
的EXC_BAD_ACCESS代码= 2错误。
在没有数据之前,collectionView
只是加载空单元格,但我想要的设计(意味着customizeLayoutFlow
效果很好)。
如何解决这个问题?
更新
我用另一种方式修复问题:
#pragma mark - customize layout
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
return CGSizeMake(106.0, 106.0);
}
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{
return 1.0;
}
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{
return 1.0;
}
很难过,我没有弄清楚如何使用UICollectionViewFlowLayout
,但至少它有效。
答案 0 :(得分:1)
如果你尝试怎么办?
-(void)customizeLayoutFlow{
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
layout.itemSize = CGSizeMake(106.0, 106.0);
layout.minimumInteritemSpacing = 1.0;
layout.minimumLineSpacing = 1.0;
self.myCollectionView.collectionViewLayout = layout;
}
代替?