我有ViewController
其中有两个collectionView
,但我想要isPagingEnabled
用于单元格,而另一个collectionView
3项用于全帧宽度。我怎样才能做到这一点 ?
用于分页的MenuCollectionView:它完美运行
func setupMenuCollection(){
if let flowLayout = menuCollectionView?.collectionViewLayout as? UICollectionViewFlowLayout {
flowLayout.scrollDirection = .horizontal
flowLayout.minimumLineSpacing = 0
}
menuCollectionView?.backgroundColor = UIColor.white
menuCollectionView?.contentInset = UIEdgeInsetsMake(50, 0, 0, 0)
menuCollectionView?.scrollIndicatorInsets = UIEdgeInsetsMake(50, 0, 0, 0)
menuCollectionView?.isPagingEnabled = true
}
对于manubarCollectionView:它不起作用,因为这里没有else语句。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if manubarCollectionView == collectionView {
return CGSize(width: view.frame.width / 3, height: manubarCollectionView.frame.height)
}
}
答案 0 :(得分:5)
很简单,对于第二个collectionView
单元格大小,请添加else block
并返回CGSize
或在CGSize
之后直接返回if block
。
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if manubarCollectionView == collectionView {
return CGSize(width: view.frame.width / 3, height: manubarCollectionView.frame.height)
}
else {
//return cell size for menuCollectionView
return collectionView.frame.size
}
}
或强>
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if manubarCollectionView == collectionView {
return CGSize(width: view.frame.width / 3, height: manubarCollectionView.frame.height)
}
//return cell size for menuCollectionView
return collectionView.frame.size
}
注意:您需要在dataSource
的所有delegate
和collectionView
方法中加入此类条件,以区分两个collectionView
。
答案 1 :(得分:1)
见Cristan,
menuCollectionView?.contentInset = UIEdgeInsetsMake(50, 0, 0, 0)
上述方法用于设置两个单元格之间的空间。
和 下面的方法collectionViewLayout用于设置单元格宽度和高度
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if manubarCollectionView == collectionView {
return CGSize(width: view.frame.width / 3, height: manubarCollectionView.frame.height)
}
else
{
return CGSize(width: 100, height: 100)
}
}
如果要为两个集合视图处理不同的单元格,请检查