在TableView中隐藏UIView并更新约束

时间:2017-07-01 21:57:21

标签: ios swift uitableview nslayoutconstraint tableviewcell

我有自定义的tableview单元格,下面有UITextView和UIView。 TextView使用sizeToFit方法调整内容的高度。视图具有固定高度。细胞高度正在变化以适应内容。细胞显示正常。

我想要的是在我的一些单元格中隐藏View。不仅要将其隐藏属性设置为真,还要调整单元格的高度。

enter image description here

2 个答案:

答案 0 :(得分:1)

为了让您的生活更轻松(如果您使用的是iOS 9及更高版本),请在自定义单元格中使用UIStackView

现在,以下步骤可让您UITableViewCell自动调整UITextView

的高度
  1. 在控制器的viewDidLoad()方法中添加此设置,并根据需要修改UITableView

    self.tableView.estimatedRowHeight = 150
    self.tableView.rowHeight = UITableViewAutomaticDimension
    
  2. 实施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)
        }
    }
    
  3. 最后,关闭textView的水平和垂直滚动指示器。

  4. 然后,要切换单元格中任何视图的可见性,只需切换它并重新加载tableView即可。

答案 1 :(得分:1)

你说你的视图有一个固定的高度?因此,如果它具有高度约束,则将IBOutlet添加到其中。

当你想要隐藏视图时,只需将其设置为零即可。

heightConstraint.constant = 0;