swift 我希望集合视图每行显示2列,如何实现?

tcbh2hod  于 2023-05-05  发布在  Swift
关注(0)|答案(2)|浏览(162)
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath as IndexPath) as! SkrapCollectionViewCell
    
    cell.myLabel.text = self.items[indexPath.item]

    return cell
}

这是我的集合视图代码,我需要在其中放置代码来编辑列数。现在是六点。

mlmc2os5

mlmc2os51#

您不需要检查设备大小,因为我们可以使用collectionView宽度来计算单元格的宽度。使用单元格宽度,您可以根据需要计算高度。
还有一件事需要使用UICollectionViewDelegateFlowLayout并确认下面的delegate & implement方法

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{
    let padding: CGFloat =  25
    let collectionViewSize = collectionView.frame.size.width - padding
    return CGSize(width: collectionViewSize/2, height: 115)
}
ttcibm8c

ttcibm8c2#

如果你正在使用故事板中的集合视图,那么这个解决方案可能对你有用。

class AbcViewController: UIViewController {

@IBOutlet var collectionView: UICollectionView!

override func viewDidLoad() {
    super.viewDidLoad()
    
    coachCollectionView.dataSource = self
    coachCollectionView.collectionViewLayout = AbcViewController.createLayout()

    
}
static func createLayout() -> UICollectionViewCompositionalLayout {
    let item = NSCollectionLayoutItem(layoutSize: NSCollectionLayoutSize(widthDimension: .fractionalWidth(1), heightDimension: .fractionalHeight(1)))
    
    
    let group = NSCollectionLayoutGroup.horizontal(layoutSize:
        NSCollectionLayoutSize(
            widthDimension: .fractionalWidth(1),
            heightDimension: .fractionalHeight(2/5)),
        subitem: item,
        count: 2
    )
    
    
    let section = NSCollectionLayoutSection(group: group)
    
    return UICollectionViewCompositionalLayout(section: section)
}}

相关问题