4.4 和 5.5 英寸的 UICollectionViewCell 动态调整大小
Posted
技术标签:
【中文标题】4.4 和 5.5 英寸的 UICollectionViewCell 动态调整大小【英文标题】:UICollectionViewCell dynamic sizing for 4.4 and 5.5 inch 【发布时间】:2014-11-13 09:18:38 【问题描述】:我有 UICollectionView 与情节提要中的单元格。每个单元格的大小设置为 145x145。
它们在 iPhone 4 - 5s 上看起来不错,但在 iPhone 6 和 6+ 上尺寸并没有按比例增加。与其手动为每个设备设置不同的单元格大小,我该如何动态地做到这一点?
在此处查看示例:iPhone 5S:http://prntscr.com/55vy7q,iPhone 6:http://prntscr.com/55vyy2
【问题讨论】:
您可以使用-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
委托方法来获取单元格大小。
【参考方案1】:
如果您希望您的单元格调整其宽度,您需要根据视图宽度计算流布局的itemSize
。
如果所有单元格的大小都相同,您可以设置流布局的itemSize
属性:
#define kCellsPerRow 2
UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout*)self.collectionView.collectionViewLayout;
CGFloat availableWidthForCells = CGRectGetWidth(self.collectionView.frame) - flowLayout.sectionInset.left - flowLayout.sectionInset.right - flowLayout.minimumInteritemSpacing * (kCellsPerRow - 1);
CGFloat cellWidth = availableWidthForCells / kCellsPerRow;
flowLayout.itemSize = CGSizeMake(cellWidth, flowLayout.itemSize.height);
如果你想动态改变每行的单元格数量,我提供了details in a separate answer。
如果您需要计算每个单元格的大小,您可以在 collectionView:layout:sizeForItemAtIndexPath:
委托中进行。
当设备方向改变并更新布局时重新计算itemSize:
无动画重绘布局:
[self.collectionView.collectionViewLayout invalidateLayout]
动画布局更改:
[self.collectionView performBatchUpdates:nil completion:nil]
【讨论】:
感谢原发帖者提出问题和您的回答。我已经很接近了,但我仍然停留在最后一部分。我在这里发布了我的问题:link @user4151918 你会用什么方法设置collectionviewflowlayout?以上是关于4.4 和 5.5 英寸的 UICollectionViewCell 动态调整大小的主要内容,如果未能解决你的问题,请参考以下文章
您必须提供 5.5 英寸 Retina 显示屏的屏幕截图(适用于 4.7 英寸)
在 iTunes 中上传 5.5 英寸屏幕连接以发布应用程序的问题
在Xcode 5.0.1(更新的xcode 6)中为3.5,4.0(更新的4.7和5.5)英寸屏幕开发相同的UI,没有风景,没有iPad,没有故事板