我有自定义的tableview单元格,下面有UITextView和UIView。 TextView使用sizeToFit方法调整内容的高度。视图具有固定高度。细胞高度正在变化以适应内容。细胞显示正常。
我想要的是在我的一些单元格中隐藏View。不仅要将其隐藏属性设置为真,还要调整单元格的高度。
答案 0 :(得分:1)
为了让您的生活更轻松(如果您使用的是iOS 9及更高版本),请在自定义单元格中使用UIStackView
。
现在,以下步骤可让您UITableViewCell
自动调整UITextView
在控制器的viewDidLoad()
方法中添加此设置,并根据需要修改UITableView
。
self.tableView.estimatedRowHeight = 150
self.tableView.rowHeight = UITableViewAutomaticDimension
实施UITextViewDelegate
并确保您将textView的委托设置为自己。
// MARK: - TextView Delegate
extension YourController: UITextViewDelegate {
func textViewDidChange(_ textView: UITextView) {
let currentOffset = self.tableView.contentOffset
UIView.setAnimationsEnabled(false)
self.tableView.beginUpdates()
self.tableView.endUpdates()
UIView.setAnimationsEnabled(true)
tableView.setContentOffset(currentOffset, animated: false)
}
}
最后,关闭textView的水平和垂直滚动指示器。
然后,要切换单元格中任何视图的可见性,只需切换它并重新加载tableView即可。
答案 1 :(得分:1)
你说你的视图有一个固定的高度?因此,如果它具有高度约束,则将IBOutlet添加到其中。
当你想要隐藏视图时,只需将其设置为零即可。
heightConstraint.constant = 0;