单元格 uicollectionviewflowlayout 之间的边距相同
Same margin between cell uicollectionviewflowlayout
我在 google 和 Whosebug 上搜索了一段时间,试图在我的 UICollectionViewCells
上完成一个相当简单的操作,但直到现在我'我没能做到。
我想要的是一个 CollectionViewController
,每行有两个单元格。每个单元格的顶部、左侧、底部和右侧的边距必须相同。
到目前为止我拥有的是:
问题是我希望单元格的每一侧都有相同的边距。这意味着 EdgeInsets
左右都必须是 14 而不是 7..
我无法完成此操作。我知道我遗漏了一些东西,但我不知道是什么。
我用的是FlowLayout
,这是UICollectionViewDelegateFlowLayout
的代码
fileprivate let phoneSectionInsets = UIEdgeInsets(top: 14.0, left: 7.0, bottom: 20.0, right: 7.0)
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let phoneHeight = 250
let fixedWidth = 220
return CGSize(width: (collectionView.bounds.size.width / 2 - (phoneSectionInsets.left + phoneSectionInsets.right)), height: CGFloat(phoneHeight))
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return phoneSectionInsets
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 14.0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 14.0
}
如果我将左侧和右侧的边距设置为 14,那么左右两侧的边距为 14,但单元格之间的边距为 28..
非常感谢您的帮助。
我在我的应用程序中使用此代码做完全相同的事情:
let width = (UIScreen.main.bounds.size.width-30)*0.5
collectionViewFlowLayout.itemSize = CGSize(width: width, height: UIScreen.main.bounds.size.width * 0.5)
collectionViewFlowLayout.scrollDirection = .vertical
collectionViewFlowLayout.sectionInset = UIEdgeInsets(top: 10,left: 10,bottom: 10,right: 10)
collectionViewFlowLayout.minimumInteritemSpacing = 10
collectionViewFlowLayout.minimumLineSpacing = 10
Note: I have taken the outlet of the flow layout instead using delegate methods.
根据需要更改单元格大小。
您需要在 sizeforitem
中交叉检查您的代码
fileprivate let phoneSectionInsets = UIEdgeInsets(top: 14.0, left: 14.0, bottom: 20.0, right: 14.0)
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let phoneHeight = 250
let fixedWidth = 220
return CGSize(width: (collectionView.bounds.size.width - (phoneSectionInsets.left + phoneSectionInsets.right + 14/*item spacing */))/2.0, height: CGFloat(phoneHeight))
}
计算项目宽度时,您需要考虑左右边距以及项目之间的间距。
我在 google 和 Whosebug 上搜索了一段时间,试图在我的 UICollectionViewCells
上完成一个相当简单的操作,但直到现在我'我没能做到。
我想要的是一个 CollectionViewController
,每行有两个单元格。每个单元格的顶部、左侧、底部和右侧的边距必须相同。
到目前为止我拥有的是:
问题是我希望单元格的每一侧都有相同的边距。这意味着 EdgeInsets
左右都必须是 14 而不是 7..
我无法完成此操作。我知道我遗漏了一些东西,但我不知道是什么。
我用的是FlowLayout
,这是UICollectionViewDelegateFlowLayout
fileprivate let phoneSectionInsets = UIEdgeInsets(top: 14.0, left: 7.0, bottom: 20.0, right: 7.0)
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let phoneHeight = 250
let fixedWidth = 220
return CGSize(width: (collectionView.bounds.size.width / 2 - (phoneSectionInsets.left + phoneSectionInsets.right)), height: CGFloat(phoneHeight))
}
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return phoneSectionInsets
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 14.0
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 14.0
}
如果我将左侧和右侧的边距设置为 14,那么左右两侧的边距为 14,但单元格之间的边距为 28..
非常感谢您的帮助。
我在我的应用程序中使用此代码做完全相同的事情:
let width = (UIScreen.main.bounds.size.width-30)*0.5
collectionViewFlowLayout.itemSize = CGSize(width: width, height: UIScreen.main.bounds.size.width * 0.5)
collectionViewFlowLayout.scrollDirection = .vertical
collectionViewFlowLayout.sectionInset = UIEdgeInsets(top: 10,left: 10,bottom: 10,right: 10)
collectionViewFlowLayout.minimumInteritemSpacing = 10
collectionViewFlowLayout.minimumLineSpacing = 10
Note: I have taken the outlet of the flow layout instead using delegate methods.
根据需要更改单元格大小。
您需要在 sizeforitem
中交叉检查您的代码fileprivate let phoneSectionInsets = UIEdgeInsets(top: 14.0, left: 14.0, bottom: 20.0, right: 14.0)
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let phoneHeight = 250
let fixedWidth = 220
return CGSize(width: (collectionView.bounds.size.width - (phoneSectionInsets.left + phoneSectionInsets.right + 14/*item spacing */))/2.0, height: CGFloat(phoneHeight))
}
计算项目宽度时,您需要考虑左右边距以及项目之间的间距。