複数行テキストを表示するテーブルビュー(セル高さ可変)を Dynamic Typeに対応させる記事。
セルの高さは
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context;
(長い!^^;)メソッドを使って計算しています。
これまでよく使われていた sizeWithFont 系のメソッドは、iOS 7から Deprecated になったようです。
また、設定画面で文字サイズが変更された通知(UIContentSizeCategoryDidChangeNotification)を受け取り、UITableView全体をリロードするようにします。
概要を知るのにいい。
Auto Layout を使わない場合にセル上に表示したラベルにDynamic Fontを適用するケースの解説 ※
Xcode5のフォント設定では新しくHeadlineやCaptionといったコンテキストベースのものが選択可能になっている。システム設定に沿った表現を行いたい場合はこれらを使う。HTML(CSS)に近くなった感じ。
実装ポイントとしては (1)UIContentSizeCategoryDidChangeNotificationを受け取って再描画 (2) preferredFontForTextStyle:を元にセルの高さを計算するところ。
※日付が6月なので古い情報(ベータ版)