如图点击最后一个选项之后,需要滚动到最右边的,由于使用了自适应大小,切换方向,导致获取到的contentSize
配置layout 的estimatedItemSize
cellAlignmentlayout.estimatedItemSize = CGSizeMake(100, 28)
切换布局方向
if (self.cellAlignmentlayout.scrollDirection == UICollectionViewScrollDirectionHorizontal) {
self.cellAlignmentlayout.scrollDirection = UICollectionViewScrollDirectionVertical;
} else {
self.cellAlignmentlayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
}
最后的结果如有图,是错误的
但是当我们使用代理方法获取计算的大小的时候,就是好的。d下面的代码执行之后,estimatedItemSize 设置的就会失效
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellClassName = [self.collectionViewModel reuseViewClassNameWithIndexPath:indexPath];
id model = [self.collectionViewModel modelWithIndexPath:indexPath];
CGSize itemSize= [NSClassFromString(cellClassName) itemSizeWithModel:model];
return itemSize;
}
如果选中最后一个的效果,就滚动到了最后一个
由此可得,当我们需要切换UICollectionViewFlowLayout 的 scrollDirection时候,不能使用estimatedItemSize