我正在iPhone XR模拟器上对此进行测试。我有3行图像,我希望它们以3列显示,顶部,左侧,右侧和底部2点距离。这曾经可以工作,但由于某种原因,现在没有了。
extension ProfileVC : UICollectionViewDelegateFlowLayout {
override func size(forChildContentContainer container: UIContentContainer, withParentContainerSize parentSize: CGSize) -> CGSize {
return CGSize(width: collectionView.bounds.width / 3, height: collectionView.bounds.width / 3)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return UIEdgeInsets(top: 2, left: 2, bottom: 2, right: 2)
}
}
这是我的结果:
答案 0 :(得分:1)
尝试实现sizeForItemAt indexPath方法,以仅基于项目宽度根据屏幕宽度动态调整项目视图的三列。 获取屏幕宽度或集合视图宽度,然后减去您喜欢的空格(8),然后除以3(3列)。 另外,从情节提要或nib文件中,将minSpacing设置为第2行,将节插入设置为top = 2,并注释上述方法并仅实现此方法
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let width = (collectionView.frame.width - 8) / 3
return CGSize(width: width, height: width)
}