IOS 7のUILabel
およびUITextView
でダイナミックタイプをサポートするにはどうすればよいですか?私はiOS 7のプロジェクトの1つを採用しており、このユーザー補助機能をサポートしたいと考えています。 AppleのiOS開発者サイトでは、具体的なチュートリアルの方法を見つけることができません。
新しいUIFont
メソッドを使用すると、ほとんど問題はありません。変更をリッスンするオブザーバーを追加するだけです。
特定のフォントサイズを設定するのではなく、preferredFontForTextStyle:
およびラベルのスタイル設定時の関連メソッド(Interface Builderを使用している場合は、インスペクターで直接スタイルを選択できます)。例えば:
self.label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
それが終わったら、UIContentSizeCategoryDidChangeNotification
をリッスンする必要があります。この通知を受け取ったら、新しく選択したサイズをサポートするようにラベルをレイアウトする必要があります(自動レイアウトを使用している場合、これは通常、ビューにinvalidateIntrinsicContentSize
を送信するのと同じくらい簡単です)。
公式ドキュメントを探している場合は、 テキストプログラミングガイド を参照してください。
Swift 3およびiOS 10では、
headline.font = UIFont.preferredFont(forTextStyle: UIFontTextStyleHeadline)
headline.adjustsFontForContentSizeCategory = true
詳細、特にiOS 10より前のバージョンをサポートする方法については この優れた投稿 を参照してください。