为集合视图中的某些项强制换行 - Swift 3

时间:2018-04-11 21:44:23

标签: ios swift3 uicollectionview uicollectionviewcell uicollectionviewlayout

我有一个包含多个部分的集合视图。集合视图数据源是

dataSource = [Section]

每个部分的数据成员如下

Section = {id, [arr1], [arr2]}

此处, id 被指定为部分标题标签。目前,我能够为 arr1 arr2 中的所有项生成和插入单元格。但它们不断插入该部分。我希望能够在新行上从 arr2 中插入单元格,即使在插入 arr1 中的最后一项后仍有空间。我的视图控制器子类 UICollectionViewDataSource UICollectionViewDelegate UICollectionViewDelegateFlowLayout 。实现这一目标最优雅,最灵活的方式是什么?我错过了什么吗?

以下是我在collectionview(cellForItemAt :)中的内容。 资源 arr1 ResourceDesktops arr2

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        if indexPath.item < sections[indexPath.section].resources.count {

            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: resourceReuseIdentifier, for: indexPath) as! FeedsViewCell

            if #available(iOS 11.0, *) {
                cell.imageView.accessibilityIgnoresInvertColors = true
            }

            cell.image = UIImage(named: sections[indexPath.section].resources[indexPath.item].imageName)
            cell.resourceLabel.text = sections[indexPath.section].resources[indexPath.item].resourceName
            cell.resourceLabel.sizeToFit()

            var labelFrame = cell.resourceLabel.frame
            labelFrame = CGRect(x: labelFrame.origin.x, y: labelFrame.origin.y, width: labelWidth, height: labelFrame.height)
            cell.resourceLabel.frame = labelFrame

            return cell

        } else {
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: resourceDesktopReuseIdentifier, for: indexPath) as! ResourceDesktopViewCell

            if #available(iOS 11.0, *) {
                cell.imageView.accessibilityIgnoresInvertColors = true
            }

            cell.resourceLabel.text = sections[indexPath.section].resourceDesktops[indexPath.item - sections[indexPath.section].resources.count].resourceName
            cell.resourceLabel.sizeToFit()

            var labelFrame = cell.resourceLabel.frame
            labelFrame = CGRect(x: labelFrame.origin.x, y: labelFrame.origin.y, width: labelWidth, height: labelFrame.height)
            cell.resourceLabel.frame = labelFrame

            return cell
        }
}

1 个答案:

答案 0 :(得分:0)

您可以使用UITableView代替UICollectionView来获取整个数据 详细信息,您可以在UICollectionViews的每个单元格中使用2个UITableView和一个标签