カスタムセルでUILabelの文字数に合わせてセルの高さを変える
TableViewでカスタムセルを使ったときに、UILabelの文字数に合わせてセルの高さを変えるという処理をしたときにハマったのでメモ。
基本的にはこれ9/16修正しました:iOS5のTwitter.frameworkを使ってつぶやきをカスタムテーブルで表示する - ガジェット充まゆたまのiPhone開発とかいろいろ逆引きメモと変わらないんですが、付け足しがあるのでそこだけ。
追加1点目。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { ... //追加、ラベルの高さをテキストの量に合わせて調整する [textLabel sizeToFit];
2点目、以下すべて。
//セルの高さをUILabelに合わせて設定 - (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath { NSString *newcellHeight = [tweetTextArray objectAtIndex:indexPath.row]; //CGSizeMakeの5000は大きければ適当な値でOK CGSize size = [newcellHeight sizeWithFont:[UIFont systemFontOfSize:12.0] constrainedToSize:CGSizeMake(170, 5000) lineBreakMode:UILineBreakModeWordWrap]; //+45はマージン return size.height +45; }