2017-07-01 9 views
0

UITextViewとUIViewがあるカスタムテーブルビューセルがあります。 TextViewはsizeToFitメソッドを使用してコンテンツの高さを調整しています。ビューの高さは固定されています。内容に合わせてセルの高さが変化しています。細胞は正常に表示されます。TableView内のUIViewを非表示にして、制約を更新します。

私が欲しいのは、自分のセルの一部のビューを非表示にすることです。 Buはその隠されたプロパティをtrueに設定するだけでなく、セルの高さを調整することもできます。

enter image description here

+0

ご不明な点がありましたら、コードとともにスクリーンショットを投稿してください。 –

+0

@DarkInnocence、スクリーンショットを1つ追加しました。 – moonvader

答えて

1

あなたは高さが固定されていると言っていますか?したがって、高さ制約がある場合は、IBOutletを追加します。

ビューを非表示にする場合は、定数をゼロに設定するだけです。

heightConstraint.constant = 0; 
1

(あなたはiOSの9を使用し、上記している場合)、あなたの人生を容易にするカスタムセルでUIStackViewを使用します。

は今、次の手順がUITableViewのために必要としてあなたUITableViewCellあなたのコントローラのviewDidLoad()メソッド内で、この設定を追加し、変更UITextView

  1. ために、その高さを自動調整する作るためです。

    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をリロードします。

関連する問題