【问题标题】:AutoLayout for UICollectionView CellsUICollectionView 单元格的自动布局
【发布时间】:2015-08-19 12:49:38
【问题描述】:
我的应用程序中有一个 uicollectionview,它使用 uiimageview 在小方形单元格中显示相机胶卷中的照片(使用 AssetsLibrary)。我的问题是它在 iPhone5/5S 上看起来一切正常,但在 iPhone 6 上运行时单元格之间的间距很大。问题是:我怎样才能让单元格自行调整大小以使间距保持不变在所有设备上都一样吗? (细胞反而会生长)。
【问题讨论】:
标签:
objective-c
iphone
resize
autolayout
uicollectionviewcell
【解决方案1】:
为 UIImageView 设置自动布局以确保 UIImageView 适合单元格并从那里调整单元格大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
int cellWidth = (SCREEN_WIDTH - (3 * PADDING)) / 4;
return CGSizeMake(cellWidth, cellWidth);
}
【解决方案2】:
使您的集合视图控制器遵循 UICollectionViewDelegateFlowLayout 的协议并覆盖以下方法。然后,您可以根据视图边界的大小调整单元格的大小。
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
// Calculate size based on your view's bounds here
}
注意:如果您还要处理旋转,则必须在设备旋转时使集合视图布局无效,以便再次调用此方法并重新计算尺寸。 p>
[self.collectionViewLayout invalidateLayout];