UICollectionViewCell 4.4和5.5英寸的dynamic大小
我有UICollectionView与故事板中的单元格。 每个单元格的大小设置为145×145。
它们在iPhone 4 – 5s上看起来不错,但是iPhone 6和6+的尺寸并不成比例。 而不是手动为每个设备设置不同的单元大小,我怎样才能dynamic地做到这一点?
在这里看到的例子:iPhone 5S: http : //prntscr.com/55vy7q,iPhone 6: http : //prntscr.com/55vyy2
如果您希望单元格调整其宽度,则需要根据视图宽度计算stream布局的itemSize
。
-
如果所有单元格的大小相同 ,则可以设置stream布局的
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);
如果你想dynamic地改变每行的单元格数量,我已经在一个单独的答案中提供了这些细节 。
-
如果您需要计算每个单元格的大小 ,可以在
collectionView:layout:sizeForItemAtIndexPath:
delegate中执行。
当设备方向改变时重新计算itemSize并更新布局:
-
无animation重绘布局:
[self.collectionView.collectionViewLayout invalidateLayout]
-
animation布局更改:
[self.collectionView performBatchUpdates:nil completion:nil]