2017-07-01 40 views
0

我有自定义的tableview单元格,它下面有UITextView和UIView。 TextView使用sizeToFit方法将其高度调整为内容。视图具有固定的高度。细胞高度正在变化以适应内容。细胞显示很好。在TableView中隐藏UIView并更新约束条件

我想要的是在我的一些细胞中隐藏视图。布不仅设置其隐藏的属性是真实的,而且调整细胞的高度。

enter image description here

+0

你的问题并不完全清楚,请将代码截图一并发布。 –

+0

@DarkInnocence,我添加了一个截图 - 它是否清楚? – moonvader

回答

1

你说你认为有一个固定的高度?所以,如果它有高度限制,那么可以添加IBOutlet。

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

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

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