在 TableView 中隐藏 UIView 并更新约束
Hide UIView inside TableView and update constraints
我有自定义的 tableview 单元格,它下面有 UITextView 和 UIView。 TextView 使用 sizeToFit 方法根据内容调整它的高度。视图具有固定高度。单元格高度正在改变以适合内容。细胞显示正常。
我想要的是在我的一些单元格中隐藏视图。 Bu 不仅将它的 hidden 属性 设置为 true 还调整了 cell 的高度。
为了让您的生活更轻松(如果您使用的是 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。
你说你的视图有固定的高度?因此,如果它具有高度限制,请向其添加 IBOutlet。
当您想隐藏视图时,只需将其常量设置为零即可。
heightConstraint.constant = 0;
我有自定义的 tableview 单元格,它下面有 UITextView 和 UIView。 TextView 使用 sizeToFit 方法根据内容调整它的高度。视图具有固定高度。单元格高度正在改变以适合内容。细胞显示正常。
我想要的是在我的一些单元格中隐藏视图。 Bu 不仅将它的 hidden 属性 设置为 true 还调整了 cell 的高度。
为了让您的生活更轻松(如果您使用的是 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。
你说你的视图有固定的高度?因此,如果它具有高度限制,请向其添加 IBOutlet。
当您想隐藏视图时,只需将其常量设置为零即可。
heightConstraint.constant = 0;