我有一个要添加子视图的UITableViewCell。但是,在添加子视图之后,单元格的高度仍报告自添加子视图之前的旧高度。
// Setting up using rx, calling cell.setup()
viewModel
.map { $0.viewModels }
.flatMap(ignoreNil)
.bind(to: tableView.rx.items(cellIdentifier: "TableViewCell", cellType: TableViewCell.self)) { (row, viewModel, cell) in
cell.viewModel = viewModel
cell.setup()
}
.disposed(by: disposeBag)
// Cell setup in my UITableViewCell class
private func setup() {
let threeTileView = TileView(frame: bodyView.bounds)
// Bodyview is a view within the cell
bodyView.addSubview(threeTileView)
}
bodyview在屏幕外滚动时也消失了,因为我猜测将子视图添加到我的单元格时存在布局问题。我的tableview无法识别添加到bodyView的视图,而仅将其他视图注册到我的单元格中
答案 0 :(得分:1)
这里
let threeTileView = TileView(frame: bodyView.bounds)
frame-layout不会更新tableCell的高度,您必须使用自动布局,因为bodyView
的边界尚未正确计算
//
bodyView.addSubview(threeTileView)
threeTileView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
threeTileView.leadingAnchor.constraint(equalTo: bodyView.leadingAnchor),
threeTileView.trailingAnchor.constraint(equalTo: bodyView.trailingAnchor),
threeTileView.topAnchor.constraint(equalTo: bodyView.topAnchor),
threeTileView.bottomAnchor.constraint(equalTo: bodyView.bottomAnchor)
])