会社のクライアント向けのアプリを作成しています。アプリ全体が完成し、すでにアプリストアに掲載されています。しかし今、彼はラベル/テキストビューまたはテキストがある場所のフォントをカスタマイズしたテキストに変更することを望んでいます。ある場所でフォントを変更して、アプリ内のどこでも変更できるようにする方法はありますか?
4 に答える
私の知る限り、フォントをグローバルに変更する魔法のような解決策はありません。これを行うために小さなクラスを作成できます。たとえばUILabel
、カスタムUILabel
クラスを作成し、 と でフォントを変更するinitWithFrame
ことで、すべてのフォントを変更できますawakeFromNib
。したがって、アプリ内のすべての ui 要素に対してこれを行う必要があるようです。
でもねえ、利点はです。次回はフォントを簡単に変更できます。私たちは皆、クライアント企業がどのように考えを変えるかを知っています...
アプリのすべてのクラスにアクセスできるNSStringをアプリデリゲートに作成します。このNSStringがフォントの名前になります。次に、アプリを調べて、すべてのテキストのフォントをNSStringの名前に変更します。
label.font = [UIFont fontWithName:appDelegate.fontName size:12];
NSStringをアプリデリゲートで選択したフォントに設定するだけで、他のすべてのフォントがそれに更新されます。これは、1つのプロパティの一部のみを変更することを目的としているため、UILabelサブクラスを作成して実装するよりも簡単です。
プロジェクトの .pch ファイルにフォントのマクロ (フォント名または UIFont オブジェクトのいずれかを置き換える) を記述できます。
#define TextFont [UIFont fontWithName:@"Helvetica" size:13]
そしてそれをすべてのクラスで使用します。ただし、IB またはストーリーボードを使用して配置したすべてのテキストは、IB またはストーリーボードを介してすべてのフォントを手動で変更する必要があります。すべての UI 要素に対して IBOutelets を作成できるようになったため、次回はマクロを使用してプログラムでフォントを簡単に変更できます。