所以我在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);
}
答案 0 :(得分:1)
确保Check的剪辑子视图属性已选中。 。 。
你的collectionView属性cellSize必须在Size&位置科。 。
这可能对你有帮助。 。
答案 1 :(得分:0)
如果在调用 sizeForItemAtIndexPath:之前得到错误的布局大小,请转到storyboard并检查为这些3提供的单元格大小 - CollectionView , CollectionViewCell 和 CollectionViewFlowLayout
让它们相同。 (也可以根据需要制作相对于默认集合视图大小的大小)