代码创建的collectionView,在storyboard中调用,item的大小不正确的问题解决:
设置的是平分屏幕的宽度,结果显示出来的是下图,打印出来的宽度计算的没问题,只是显示出来的宽度不对,正确的显示如下图:
实际显示出来的是下图:
方法一:
extension XZButtonCollectionView: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
guard let collectionViewLayout = collectionViewLayout as? UICollectionViewFlowLayout else { return CGSize.zero }
collectionViewLayout.estimatedItemSize = CGSize.zero
let width = CGFloat(floor(((collectionView.frame.width - CGFloat(column - 1) * collectionViewLayout.minimumLineSpacing) / CGFloat(column))))
return .init(width: width, height: rowHeight)
}
}
最主要的是这句:collectionViewLayout.estimatedItemSize = CGSize.zero
方法二:把storyBoard中的collectionView和collectionView FlowLayout右侧Estimate Size部分都设置为None