gpt4 book ai didi

ios - 如何展开具有表格 View 的自定义 Collection View 单元格?

转载 作者:行者123 更新时间:2023-11-28 07:23:43 32 4
gpt4 key购买 nike

我正在尝试自动使 collectionView 单元格垂直扩展以显示单元格上的 tableView。

tableView 被正确填充,我在设置 cell.tableView.isHidden = false 后调用 Collection View 单元格上的重新加载

swift 4.2,Xcode 10.3

编辑:为了澄清我的问题,我试图在显示/隐藏单元格上的 tableView 时切换展开/折叠单元格(自动调整大小)。

collectionView flowLayout 变量:

// FlowLayout of the collectionView 
var flowLayout: UICollectionViewFlowLayout {
return self.collectionView?.collectionViewLayout as! UICollectionViewFlowLayout
}

collectionView viewDidLoad():

self.flowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize

collectionView 单元格:

override func preferredLayoutAttributesFitting(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
setNeedsLayout()
layoutIfNeeded()

let size = contentView.systemLayoutSizeFitting(layoutAttributes.size)
var frame = layoutAttributes.frame

frame.size.height = ceil(size.height)
layoutAttributes.frame = frame

let autoLayoutAttributes = super.preferredLayoutAttributesFitting(layoutAttributes)

// Specify you want _full width_
let targetSize = CGSize(width: layoutAttributes.frame.width, height: 0)

// Calculate the size (height) using Auto Layout
let autoLayoutSize = contentView.systemLayoutSizeFitting(targetSize, withHorizontalFittingPriority: UILayoutPriority.required, verticalFittingPriority: UILayoutPriority.defaultLow)
let autoLayoutFrame = CGRect(origin: autoLayoutAttributes.frame.origin, size: autoLayoutSize)

// Assign the new size to the layout attributes
autoLayoutAttributes.frame = autoLayoutFrame
return autoLayoutAttributes
}

点击“显示表格 View ”按钮时的 collectionView 单元格:

cell.tableView.isHidden = false
collectionView.reloadItems(at: [indexPath])

谢谢。

最佳答案

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {


let cell = collectionView.cellForItem(at: indexPath) as! yourCell

if cell.tableView.isHidden {

return CGize(width: cellWidth, height:0)

}

return CGSize(width: tableViewWidth, height: TotalTableViewCellsHeight)



}

或者

 @IBAction func showTableView(_ sender: Any) {

flowLayout.itemSize = CGSize(width: newCellWidth, height: newCellHeight)

}

关于ios - 如何展开具有表格 View 的自定义 Collection View 单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57262137/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com