web-dev-qa-db-ja.com

iOS 7のラベルで動的タイプをサポートする方法

IOS 7のUILabelおよびUITextViewでダイナミックタイプをサポートするにはどうすればよいですか?私はiOS 7のプロジェクトの1つを採用しており、このユーザー補助機能をサポートしたいと考えています。 AppleのiOS開発者サイトでは、具体的なチュートリアルの方法を見つけることができません。

33
jaytrixz

新しいUIFontメソッドを使用すると、ほとんど問題はありません。変更をリッスンするオブザーバーを追加するだけです。

特定のフォントサイズを設定するのではなく、preferredFontForTextStyle:およびラベルのスタイル設定時の関連メソッド(Interface Builderを使用している場合は、インスペクターで直接スタイルを選択できます)。例えば:

self.label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];

それが終わったら、UIContentSizeCategoryDidChangeNotificationをリッスンする必要があります。この通知を受け取ったら、新しく選択したサイズをサポートするようにラベルをレイアウトする必要があります(自動レイアウトを使用している場合、これは通常、ビューにinvalidateIntrinsicContentSizeを送信するのと同じくらい簡単です)。

公式ドキュメントを探している場合は、 テキストプログラミングガイド を参照してください。

57
lxt

Swift 3およびiOS 10では、

headline.font = UIFont.preferredFont(forTextStyle: UIFontTextStyleHeadline)
headline.adjustsFontForContentSizeCategory = true

詳細、特にiOS 10より前のバージョンをサポートする方法については この優れた投稿 を参照してください。

2
Suragch