我的单元格是正方形的,无论大小如何都很好看。我正在寻找单元格的最大尺寸,以便显示所有单元格都不需要滚动。
举例来说,此屏幕快照非常适合3个玩家,但是将其踢到12个玩家会使他们滚动出界,这是可以避免的。
有没有办法做到这一点?
最佳答案
基于上面的rdelmar代码,并剔除了所有技巧。蛮力计算可确保在某些边缘情况下提供正确答案,而在其他情况下失败。
使用二进制搜索以提高效率。
// Make the cells fit
override func viewDidLayoutSubviews() {
var highestWorking = 0
var lowestNotWorking = 9999
while lowestNotWorking > highestWorking + 1 {
let currentTest = (highestWorking + lowestNotWorking) / 2
let cols = Int(playerPhotoCollectionView.frame.size.width + 10) / (currentTest + 10)
let rows = Int(playerPhotoCollectionView.frame.size.height + 10) / (currentTest + 10)
if cols * rows >= game.numberOfPlayers {
highestWorking = currentTest
} else {
lowestNotWorking = currentTest
}
}
let size = CGSize(width: CGFloat(highestWorking), height: CGFloat(highestWorking))
(self.playerPhotoCollectionView.collectionViewLayout as! UICollectionViewFlowLayout).itemSize = size
super.viewDidLayoutSubviews()
}