UIテーブルViewCellの高さを文字数に合わせて可変にする


UIテーブルViewCellの高さをその中の文字数に合わせて可変にするコードです。意外と調べるのに苦労したんですが、結構簡単にかけていろいろ使いそうなのでメモしておきます!


🐝 StoryBoard

LabelのLINEは0にする。

😼 実装コード

UIテーブルViewControllerの実装側のコードはこちら。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// textの文字数に合わせてCellの高さを修正する
return [self textHeight:_text];
}
// textを格納した場合の高さを返す
- (float) textHeight:(NSString *)text {
// 表示最大幅・高さ
CGSize maxSize = CGSizeMake(230, CGFLOAT_MAX);
// 表示するフォントサイズ
NSDictionary *attr = @{NSFontAttributeName: [UIFont boldSystemFontOfSize:17.0]};
// 以上踏まえた上で、表示に必要なサイズ
CGSize modifiedSize = [text boundingRectWithSize:maxSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attr
context:nil
].size;
return MAX(modifiedSize.height + 30, 49);
}

🐠 あとがき

iOS 8からこの情報が意味なくなるそう。書いてから気付いたorz

iOS - ついにTableViewCellの高さが自動で調整してくれるようになった件!!! - Qiita

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)