1

テキストの長さに応じて高さを正しくサイズ変更する UILabel を持つ UITableViewCell があります。これを達成するために、オートレイアウトの制約を正しく設定し、指定しました

tableView.rowHeight = UITableViewAutomaticDimension

私が抱えている問題は、セル自体で UIButton を押した後に UILabel のテストが長くなったときです。プログラムで UILabel にテキストを追加すると、セルの高さが大きくなることが予想されます。私が追加しました:

    self.layoutIfNeeded()
    self.updateConstraints()

セル内にありますが、機能していません。セルは同じ高さのままです。

また、デリゲート UIViewController のセル行のリロードを強制しましたが、どちらも機能していません。ここで基本的なものが欠けていますか?

編集:高さを手動で計算する必要がないように答えたいので、質問は他の同様の質問とは異なります。AutoLayout は最初の読み込み時に正しい動的な高さを完全に計算できるため、行の高さを推定するために手動で計算を実行する必要なく、ラベル内のテキストが長くなったらセルを再描画する方法があるはずです。

4

2 に答える 2

1

呼び出している UILabel コンテンツを更新した後、機能するソリューションを見つけました。

 UIView.animateWithDuration(0.3) {
     cell.contentView.layoutIfNeeded()
 }

セルの制約を更新します。次に、セルの高さを変更します。

 tableView.beginUpdates()
 tableView.endUpdates()

ただし、この回答を受け入れるのを待って、他の誰かがよりエレガントなソリューションに回答するかどうかを確認します。

于 2016-07-26T13:47:05.450 に答える