在其中使用Collectionview计算TableViewCellHeight

时间:2018-04-14 07:52:33

标签: ios swift uitableview uicollectionview

是的,我知道stackoverflow中有很多关于这个问题的问题。但我的问题有点不同,因此CollectionView单元格元素为UILabels。我可以显示CollectionView元素,如下所示:

enter image description here

当我使用UITableViewAutomaticDimension时,它会解除CollectionView,并且不允许它触发delegates

我想使用heightForRowAt,无法计算UILabel行数以检测总CollectionView内容高度。由于UILabel宽度可更改,因此有时可以并排使用2个或3个标签。我希望我能解释一下这个问题。

我尝试下面的内容,但它不能完全发挥作用。有时tableviewCell涵盖CollectionView。任何人都可以帮我解决这个问题吗?

    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

        if let cell = tableView.dequeueReusableCell(withIdentifier: CELL_PLACE_DETAILED_KEYWORDS_TABLE_VIEW) as? PlaceDetailedKeywordsTableViewCell {
            let keywords = self.placeInfo?.keywords
            let btnHeight:CGFloat = PreferencesCollectionConstants.keywordsBtnHeight
            let titleLabelHeight = cell.titleLabel.frame.height
            let spaceBetweenTitleAndCollection: CGFloat = 10

            var rows = Helper.calcRowsCountOfPrefsForTableCell(data: keywords!, contentInset: self.contentInset, cellSpace: self.minItemSpacing, collectionViewWidth: cell.collectionView.frame.width,prefBtnHeight:  btnHeight,font: font2)
            rows = ceil(rows)


            let tableViewCellHeight = titleLabelHeight + spaceBetweenTitleAndCollection + rows*keywordsBtnHeight
            return tableViewCellHeight  
        }

    return UITableViewAutomaticDimension
}

0 个答案:

没有答案