Xcode 6には、 、、およびのフォントとフォント サイズを、現在のデバイス構成のサイズ クラスに基づいてストーリーボードで自動的に設定できる新しい機能があります。たとえば、「任意の幅、コンパクトな高さ」(横向きの iPhone など) の構成ではフォント サイズ 12 を使用し、「通常の幅、通常の高さ」の構成 ( iPadなど) ではサイズ 18 を使用するように を設定できます。詳細については、次を参照してください。UILabel
UITextField
UIButton
UILabel
developer.apple.com/size_class
これは、デバイス構成に基づいて UI 機能に異なるフォントをプログラムで設定する必要がなくなる可能性があるため、理論的には優れた機能です。現在、デバイスの種類に基づいてフォントを設定する条件付きコードがありますが、明らかに、アプリ全体のあらゆる場所でフォントをプログラムで設定する必要があります。ですから、最初はこの機能にとても興奮していましたが、実際の使用には重大な問題があることがわかりました (おそらくバグです)。SDK 8に対してビルドし、 iOS 8の最小展開ターゲットを設定していることに注意してください。したがって、これは古いバージョンの iOS との互換性とは関係ありません。
問題は次のとおりです。 サイズ クラスごとに異なるフォント サイズを設定し、 iOSが提供する「システム」フォントを使用すると、すべてが期待どおりに機能し、サイズ クラスに基づいてフォント サイズが変化します。アプリケーションで提供されたカスタム フォントを使用し (プログラムで動作するため、アプリケーション バンドルで正しく設定しています)、カスタム フォントをXCode 6 ストーリーボードのラベルに設定すると、これも期待どおりに動作します。しかし、ストーリーボードで、さまざまなサイズのクラスにさまざまなサイズのカスタム フォントを使用しようとすると、突然機能しなくなります。構成の唯一の違いは、選択したフォントです (カスタム フォントとシステム フォント)。代わりに、すべてのフォントがサイズクラスに関係なく、デバイスとシミュレーターをデフォルトのシステムフォントとしてデフォルトサイズで使用します(そして、ストーリーボードで指定された実際のシステムフォントをシステムフォントに置き換えていることをデバッガーで確認しました)。したがって、基本的に、カスタム フォントのサイズ クラス機能は壊れているようです。また、興味深いことに、ビュー コントローラーの XCode 6 の [プレビュー] ペインで、カスタム フォントが実際に表示され、サイズが適切に調整されます。実際の iOS システムで実行している場合にのみ機能しなくなります (これは、正しく構成していると思わせてくれます)。 .
複数の異なるカスタム フォントを試しましたが、どのフォントでも機能しないようですが、代わりに「システム」を使用すると常に機能します。
とにかく、Xcode 6でこの問題を見た人はいますか?
これがiOS 8、Xcode、または何かのバグであるかどうかについてのアイデア
私は間違っていますか?
私が見つけた唯一の回避策は、私が言ったように、iOS の約 3 つのバージョンで行ったようにプログラムでフォントを設定し続けることです。
しかし、カスタム フォントで動作させることができれば、この機能を使用できるようになりたいと思っています。システム フォントの使用は、私たちのデザインでは受け入れられません。
追加情報: Xcode 8.0 の時点で、このバグは修正されています。