У меня есть UITableView внутри UICollectionViewCell, и я хочу обновить высоту UICollectionViewCell, основываясь на высоте содержимого таблицы, и я могу получить высоту содержимого таблицы, но когда я назначаю высоту представлению таблицы. высота ячейки представления коллекции не обновляется ниже, мое усилие
class TourDetailsAdditionalInfoCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var addtionalInfoTableView: UITableView!
var additionalInfo : [String]?
func populateData(additionalInfo: [String]?) -> Void {
self.additionalInfo = additionalInfo
self.getTableViewHeight()
print("getTableViewHeight == \(height)") // Here i am getting proper height
self.addtionalInfoTableView.reloadData()
self.addtionalInfoTableView.snp.updateConstraints { (maker) in
maker.height.equalTo(self.height)
self.contentView.layoutIfNeeded()
}
self.layoutIfNeeded()
}
var height : CGFloat = 0.0
func getTableViewHeight() -> Void {
let stringWidthBounds : CGFloat = UIScreen.main.bounds.size.width - 90.0
let textFont = UIFont.init(name: AppFont().medium, size: 14.0)
for string in additionalInfo ?? [String]() {
height = height + string.heightWithConstrainedWidth(width: stringWidthBounds, font: textFont!)
}
}
lazy var width: NSLayoutConstraint = {
let width = contentView.widthAnchor.constraint(equalToConstant: bounds.size.width)
width.isActive = true
return width
}()
override func systemLayoutSizeFitting(_ targetSize: CGSize, withHorizontalFittingPriority horizontalFittingPriority: UILayoutPriority, verticalFittingPriority: UILayoutPriority) -> CGSize {
width.constant = bounds.size.width
return contentView.systemLayoutSizeFitting(CGSize(width: targetSize.width, height: 1))
}
}