AutoLayout中的UICollectionView单元格大小

Pei*_*Pei 6 objective-c collectionview ios autolayout

所以我正在使用UICollectionViewunder AutoLayout-enabled storyboard.我正在尝试根据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);
}
Run Code Online (Sandbox Code Playgroud)

iHa*_*edi 1

确保视图的 Clip Subviews 属性已选中。。。。

并且您的 collectionView 属性 cellSize 必须在 Size & Location Section 中正确。。。

也许这对你有帮助。。。