2016-09-24 3 views
0

私のストーリーボードにはUITableViewCellが動的に生成されたUITableViewがあります。各セルは2つのラベルと1つのテキストビューが含まれています:UITableViewCellの高さを内部のUITextViewのコンテンツに合わせるにはどうしたらいいですか?

enter image description here

私はテキストの量にテキストフィールドのサイズを調整コードがあります。

let fixedWidth = cell.myComment.frame.size.width 
cell.myComment.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max)) 
let newSize = cell.myComment.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max)) 
var newFrame = cell.myComment.frame 
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height) 
cell.myComment.frame = newFrame; 

をし、それが、正常に動作したときにI赤に私のTextViewの背景色を設定し、私は以下を参照してください

enter image description here

とセル自体 - 私は、Siを設定していますZEここで:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 
    if indexPath.row == 0 { 
     return 100//this is my static cell 
    } 
    else { 
     return 117; //for now it's hardcoded - how can I set this value dynamically based on content? 
    } 
} 

だから私は上記のコメントで書いたように - 私は動的にテキストビュー内のテキストの量に基づいて、セルの高さを設定することができますか?

答えて

3

次のように(私はお勧め自動レイアウトに基づく、)自己サイズ表のセルを取得するための鍵は、次のとおりです。

  • UITableViewCell
  • contentViewにあなたのサブビューを追加するには、サブビュー間の制約を提供し、あなたのサブビューがテーブルセルのすべての端に達するように、contentViewあなたの場合、これはおそらく、UITextViewleading,trailingtop、およびbottomのエッジをcontentViewの対応するエッジに揃えることを意味します。
  • ハードコードされたCGFloatではなく、行の高さをUITableViewAutomaticDimensionに設定します。
  • コントローラのどこかに、高さの見積もりをtableView.estimatedRowHeight = x(ハードコーディングされた定数は正常です。これはパフォーマンス用です)としてください。
+0

私はまだテキストビューの高さを調整するコードの一部が必要ですか? – user3766930

+0

エッジを拘束している限り、UITextViewはテキストを2行目に折り返すほどスマートです。 'UILabel'のように、そのテキストに基づいて本質的なコンテンツサイズを持っています。 – Connor

+0

感謝の男、魅力的な作品:) – user3766930