我在启用自动布局的Storyboard下使用了UICollectionView。
我试图根据collectionView本身来设置单元格大小,这是基于[collectionView:layout:sizeForItemAtIndexPath:]方法完成的。
collectionView也依赖于自动布局,在第一次使用时会给出错误的大小(我认为这是在视图布局之前)。
我知道它们将在viewDidLayoutSubviews方法被调用后拥有正确的大小,但这会导致重载collectionView项目两次,从而在运行时造成UI故障。
以下是我的实现中[collectionView:layout:sizeForItemAtIndexPath:]方法:
以下是我的实现中[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);
}
[galleryView reloadData]
? - Kyle Truscott