4

UITextView私はすべての編集可能を持っていUITableViewCellます。

UITextViews事前にロードされたテキストのサイズ変更はうまくいきますが (を介して計算されます)、テキストを動的に追加するときにheightForRowAtIndexPath使用してスムーズなサイズ変更を行う方法がわかりません。AutoLayout切れるだけのようです。

を使用してAutoLayout、 をスムーズにサイズ変更し、入力されているテキストUITableViewCellUITextViewに合わせるにはどうすればよいUITextViewですか?

4

2 に答える 2

7

受け入れられた回答は非推奨のものです。iOS 8 SDK にはこれに対するクリーンなソリューションがあります

viewDidLoad で、tableView に行の高さを自動的に計算するように指示します。

tableView.estimatedRowHeight = 44.0f;
tableView.rowHeight = UITableViewAutomaticDimension;

UITextViewDelegate プロトコルの textViewDidChange: メソッドを実装し、テキストが編集されるたびに tableView に再描画するように指示します。

- (void)textViewDidChange:(UITextView *)textView {
[tableView beginUpdates];
[tableView endUpdates];
}

また、UITextView デリゲートを Storyboard/IB または tableView:cellForRowAtIndexPath のどこかに設定することを忘れないでください。

于 2015-03-12T12:45:04.207 に答える
3

できません。テーブル ビュー セルは、レイアウトの制約ではなく、デリゲート メソッドを介して高さを取得しますtableView:heightForRowAtIndexPath:

おそらく、次のような効果を得ることができます。

  • テキスト ビューをセルのコンテンツ ビューの上部と下部にピン留めする
  • テキスト ビューのデリゲート メソッドで、入力時にテキスト サイズを再計算します。
  • サイズの変更が必要な場合は、モデル内の高さが保存されている場所を更新します
  • テーブルビューでbeginUpdates呼び出します。endUpdatesこれにより、高さが再クエリされ、新しいサイズにアニメーション化されます (拡張により、テキスト ビューのサイズも調整されます)。
于 2013-06-02T07:06:51.587 に答える