【问题标题】:UICollectionView with two UICollectionViewFlowLayoutUICollectionView 带有两个 UICollectionViewFlowLayout
【发布时间】:2019-11-06 23:50:52
【问题描述】:

我正在开发一个 iOS 项目,Swift。我们如何为一个 collectionView 分配两种不同的流布局?在这里,我需要我的 UICollectionViewCell 看起来像一个堆栈卡,为此,我使用 CardsCollectionViewLayout(外部 pod 文件)。

myCollectionView.collectionViewLayout = CardsCollectionViewLayout()

而且它工作正常。但问题是我无法使用设备宽度调整 UICollectionViewCell 宽度。为此,我需要使用 UICollectionViewDelegateFlowLayout。

func collectionView(_ collectionView: UICollectionView,
                    layout collectionViewLayout: UICollectionViewLayout,
                    sizeForItemAt indexPath: IndexPath) -> CGSize {
    let nCol = 1
    let flowLayout = collectionViewLayout as! UICollectionViewFlowLayout
    let totalSpace = flowLayout.sectionInset.left
        + flowLayout.sectionInset.right
        + (flowLayout.minimumInteritemSpacing * CGFloat(nbCol - 1))
    let size = Int((collectionView.bounds.width - totalSpace) / CGFloat(nbCol))

    return CGSize(width: size, height: 284)
}

但是当我使用 CardsCollectionViewLayout 作为我的 collectionView 布局时,在上述方法中我没有得到回调。

有什么方法可以用我的 UICollectionViewCell 添加堆栈卡效果。

请帮帮我。

【问题讨论】:

标签: ios swift uicollectionview uicollectionviewflowlayout


【解决方案1】:

您从错误的角度看待它,如果您使用CardsCollectionViewLayout,您必须使用该布局提供的功能才能更改它。 CardsCollectionViewLayout中有一个属性叫itemSize,你可以设置它来定义卡片的大小:

let layout = CardsCollectionViewLayout()
collectionView.collectionViewLayout = layout
layout.itemSize = CGSize(width: YOUR_WIDTH, height: YOUR_HEIGHT)
collectionView.dataSource = self
collectionView.delegate = self
collectionView.isPagingEnabled = true
collectionView.showsHorizontalScrollIndicator = false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 2014-12-23
    相关资源
    最近更新 更多