質問: `TableView`のセルの大きさをコンテンツの内容に応じて変えたいのですが、どうすればいいのかが分かりません。例えば以下のような`TableView`のセルがあるとします。 ![画像の説明をここに入力](https://i.stack.imgur.com/PMM4x.jpg) このセルの一番上にある`TextView`の行が増えたり減ったりすることに応じてセルの高さを変えたいです。これを実現するには`AutoLayout`だけで可能でしょうか? また、`TextView`の下にある画像は表示するかしないかが選択でき、画像を表示しない場合だと`ImageView`がなくなった分だけセルの高さを縮めるといったことも行いたいです。 以上のことを行うにはどうすればいいでしょうか? 自分で`AutoLayout`を設定したりしたものの、セルの高さがずっと変わりません。 どなたか分かる方がいれば教えていただきたいです。 すみませんが、宜しくお願いします。 ---追記--- iOSのバージョンは9.0.1、Xcodeのバージョンは7.0.1で、Storyboardを使っています。
回答: > > (CGFloat)tableView:heightForRowAtIndexPath > > 読んで字のごとく、各行の高さを決めるメソッド。 > > tableView:cellForRowAtIndexPath: よりも先に呼び出される。 > > > ``` コードをここに入力- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ // 表示したい文字列 NSString *text = _objects[indexPath.row]; // 表示最大幅・高さ CGSize maxSize = CGSizeMake(200, CGFLOAT_MAX); // 表示するフォントサイズ NSDictionary *attr = @{NSFontAttributeName: [UIFont boldSystemFontOfSize:17.0]}; // 以上踏まえた上で、表示に必要なサイズ CGSize modifiedSize = [text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attr context:nil ].size; // 上下10pxずつの余白を加えたものと70pxのうち、大きい方を返す return MAX(modifiedSize.height + 20, 70);} ```