【问题标题】:Hide UIView inside TableView and update constraints在 TableView 中隐藏 UIView 并更新约束
【发布时间】:2017-07-01 21:57:20
【问题描述】:

我有自定义的 tableview 单元格,它下面有 UITextView 和 UIView。 TextView 正在使用 sizeToFit 方法将其高度调整为内容。视图具有固定高度。单元格高度正在更改以适应内容。细胞显示良好。

我想要在我的一些单元格中隐藏视图。 Bu不仅将其隐藏属性设置为true,还可以调整单元格的高度。

【问题讨论】:

  • 你的问题不是很清楚,请附上截图和代码。
  • @DarkInnocence,我添加了一张截图——清楚了吗?

标签: ios swift uitableview nslayoutconstraint tableviewcell


【解决方案1】:

你说你的视图有一个固定的高度?因此,如果它有高度限制,请添加 IBOutlet。

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

heightConstraint.constant = 0;

【讨论】:

    【解决方案2】:

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

    现在,以下步骤用于让您的 UITableViewCell 自动调整其高度以适应 UITextView

    1. 在控制器的viewDidLoad() 方法中添加此设置,并根据需要为您的UITableView 进行修改。

      self.tableView.estimatedRowHeight = 150
      self.tableView.rowHeight = UITableViewAutomaticDimension
      
    2. 实现 UITextViewDelegate 并确保将 textView 的委托设置为 self。

      // 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 的水平和垂直滚动指示器。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 2021-12-11
      相关资源
      最近更新 更多