AutoLayout中的UICollectionView单元格大小

时间:2014-07-11 13:26:35

标签: ios objective-c autolayout collectionview

所以我在UICollectionView启用的故事板下使用AutoLayout。 我尝试根据collectionView本身设置单元格大小,并且它基于[collectionView: layout: sizeForItemAtIndexPath:]方法。 collectionView也依赖于自动布局,并且第一次给出错误的大小(我假设这是在视图布局之前)。 我知道在调用viewDidLayoutSubviews方法后它们将具有正确的大小,但它会导致collectionView项的双重重载,这会在运行时产生UI故障。

以下是我实施的[collectionView: layout: sizeForItemAtIndexPath:]方法。

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CGSize innerSize = CGSizeMake(galleryView.frame.size.width - 80, galleryView.frame.size.height - 40);
    GLPhotoAsset *photo = [(PCOpticsPhotoPoint *)_cluster.points[indexPath.row] photo];
    CGFloat ratio = MIN(innerSize.width / photo.size.width, innerSize.height / photo.size.height);

    return CGSizeMake(photo.size.width * ratio, photo.size.height * ratio);
}

2 个答案:

答案 0 :(得分:1)

确保Check的剪辑子视图属性已选中。 。 。

你的collectionView属性cellSize必须在Size&位置科。 。

这可能对你有帮助。 。

答案 1 :(得分:0)

如果在调用 sizeForItemAtIndexPath:之前得到错误的布局大小,请转到storyboard并检查为这些3提供的单元格大小 - CollectionView CollectionViewCell CollectionViewFlowLayout

让它们相同。 (也可以根据需要制作相对于默认集合视图大小的大小)