Swift 3:以编程方式调整UICollectionViewCell的大小会导致单元格重叠

耶尔·波斯特马

我正在尝试创建一个UICollectionView彼此下面的3个单元格。这工作正常。当我触摸一个单元格时,该单元格应该展开,其他单元格应该折叠到特定高度。也工作得很好。

我无法解决的问题;当我点击一个单元格时,它会像我想要的那样扩展;它与这个下面的那个重叠。下面的那个不会向下移动,以便为该单元格增加新的空间。

我怎样才能解决这个问题?

到目前为止,这是我与UICollectionView相关的UICollectionViewCell

/**
 * Tempory 3 items
 */
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 3
}

/**
 * Defining the cells
 */
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! LicenseplateCollectionViewCell

    cell.backgroundColor = .white
    cell.layer.cornerRadius = 4

    if(indexPath.row > 0){
        cell.carStack.isHidden = true
    }

    return cell
}


/**
 * Initial size
 */
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    // The first cell always start expanded with an height of 300
    if(indexPath.row == 0){
        return CGSize(width: collectionView.bounds.size.width, height: 300)
    }else{
        // The others start with an height of 80
        return CGSize(width: collectionView.bounds.size.width, height: 80)
    }
}

/**
 * This functio shoud be handling everything like an accordeon system.
 * When I touch one cell, the others should collapse.
 */
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    // Animate resize of cell after tapping
    UIView.animate(withDuration: 0.2, animations: {
        // For now I have 3 cells, which I will loop
        for i in 0...2{
            // If this is the active cell (I just tapped on) ...
            if(indexPath.row == i){
                let cell = collectionView.cellForItem(at: indexPath) as! LicenseplateCollectionViewCell
                // This cell is expanded already, collapse it
                if(cell.frame.size.height > 200){
                    cell.carStack.isHidden = true
                    cell.frame.size = CGSize(width: collectionView.bounds.size.width, height: 80)
                }else{
                    // Open up this cell
                    cell.carStack.isHidden = false
                    cell.frame.size = CGSize(width: collectionView.bounds.size.width, height: 300)
                }
            }else{
                // Other cells besides the one I just tapped, will be collapsed
                print(indexPath.row, indexPath.section)
                let customPath = IndexPath(row: i, section: 0)
                print(customPath.row, customPath.section)
                let cell = collectionView.cellForItem(at: customPath) as! LicenseplateCollectionViewCell
                cell.carStack.isHidden = true
                cell.frame.size = CGSize(width: collectionView.bounds.size.width, height: 80)
            }
        }
    })

}
耶尔·波斯特马

我已经解决了。动画/调整大小不应在didSelectItemAt替代中发生

首先,我必须正确定义具有单元配置的阵列。在这里,我添加了一个带有布尔值的键“ active”。

当我点击一个单元格时,我将'active'布尔值切换到trueobjects数组内,然后在调用之后,它将在显示之前collectionView.reloadData()执行sizeForItemAt覆盖UICollectionView这样可以确保单元正确对齐并准确执行其应做的工作。

sizeForItemAtI中,我基于对象数组中的“活动”布尔值返回适当的高度。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Swift 3:以编程方式调整UICollectionViewCell的大小会导致单元格重叠

来自分类Dev

Swift:如何以编程方式向单元格添加textView并调整其大小?

来自分类Dev

在Swift中以编程方式选择表格单元格

来自分类Dev

Swift-StackView并以编程方式添加视图来添加约束以堆叠-加载后是否调整单元格高度?

来自分类Dev

Swift:UICollectionViewController的标题与单元格重叠

来自分类Dev

如何以编程方式为iOS中的集合视图单元格提供宽度和高度,Swift 3

来自分类Dev

UICollectionView-调整设备上单元格的大小旋转-Swift

来自分类Dev

自调整大小的单元格在Swift中不起作用

来自分类Dev

如何在Swift中以编程方式更改UICollectionViewCell大小?

来自分类Dev

Swift UItableView以编程方式自定义单元格(文档)?

来自分类Dev

在Swift中以编程方式IOS7动态绘制UITableView单元格高度

来自分类Dev

Xcode Swift。如何以编程方式在基于视图的NSTableView中选择单元格

来自分类Dev

如何根据排序标准以编程方式对单元格重新排序 SWIFT 4

来自分类Dev

Swift UICollectionViewCell调整内容大小

来自分类Dev

根据contenView的大小以编程方式调整scrollView的大小[Swift]

来自分类Dev

文本在表格单元格SWIFT中重叠

来自分类Dev

Swift:自动调整单元格内 UITextView 的高度

来自分类Dev

如何在swift中根据单元格中的图像调整CollectionView单元格的高度?

来自分类Dev

Swift:无法以编程方式配置自定义表格单元格吗?初始化不叫?

来自分类Dev

Xcode Swift UICollectionView布局-单元格大小

来自分类Dev

轻按增加/减小表格视图单元格的大小-Swift

来自分类Dev

在Swift中调整UICollectionViewCell大小时出错

来自分类Dev

获取单元格 Swift 3 中 textLabel 的值

来自分类Dev

表格单元格向左移动(swift3)

来自分类Dev

Swift 3“didFinishPickingMediaWithInfo”用于tableview单元格内的图像

来自分类Dev

Swift 3:如何点击单元格内的按钮并传入该单元格的 indexPath?

来自分类Dev

从 UITableView Swift 3 中删除所选单元格下方的单元格

来自分类Dev

以编程方式使用自适应布局来调整hCompact静态单元格高度的大小

来自分类Dev

以编程方式为图表设置“单元格不移动或调整大小”属性

Related 相关文章

  1. 1

    Swift 3:以编程方式调整UICollectionViewCell的大小会导致单元格重叠

  2. 2

    Swift:如何以编程方式向单元格添加textView并调整其大小?

  3. 3

    在Swift中以编程方式选择表格单元格

  4. 4

    Swift-StackView并以编程方式添加视图来添加约束以堆叠-加载后是否调整单元格高度?

  5. 5

    Swift:UICollectionViewController的标题与单元格重叠

  6. 6

    如何以编程方式为iOS中的集合视图单元格提供宽度和高度,Swift 3

  7. 7

    UICollectionView-调整设备上单元格的大小旋转-Swift

  8. 8

    自调整大小的单元格在Swift中不起作用

  9. 9

    如何在Swift中以编程方式更改UICollectionViewCell大小?

  10. 10

    Swift UItableView以编程方式自定义单元格(文档)?

  11. 11

    在Swift中以编程方式IOS7动态绘制UITableView单元格高度

  12. 12

    Xcode Swift。如何以编程方式在基于视图的NSTableView中选择单元格

  13. 13

    如何根据排序标准以编程方式对单元格重新排序 SWIFT 4

  14. 14

    Swift UICollectionViewCell调整内容大小

  15. 15

    根据contenView的大小以编程方式调整scrollView的大小[Swift]

  16. 16

    文本在表格单元格SWIFT中重叠

  17. 17

    Swift:自动调整单元格内 UITextView 的高度

  18. 18

    如何在swift中根据单元格中的图像调整CollectionView单元格的高度?

  19. 19

    Swift:无法以编程方式配置自定义表格单元格吗?初始化不叫?

  20. 20

    Xcode Swift UICollectionView布局-单元格大小

  21. 21

    轻按增加/减小表格视图单元格的大小-Swift

  22. 22

    在Swift中调整UICollectionViewCell大小时出错

  23. 23

    获取单元格 Swift 3 中 textLabel 的值

  24. 24

    表格单元格向左移动(swift3)

  25. 25

    Swift 3“didFinishPickingMediaWithInfo”用于tableview单元格内的图像

  26. 26

    Swift 3:如何点击单元格内的按钮并传入该单元格的 indexPath?

  27. 27

    从 UITableView Swift 3 中删除所选单元格下方的单元格

  28. 28

    以编程方式使用自适应布局来调整hCompact静态单元格高度的大小

  29. 29

    以编程方式为图表设置“单元格不移动或调整大小”属性

热门标签

归档