2017-07-01 61 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即可。