iPhone Objective-C でアプリケーション全体にグローバル フォント [新しいカスタム フォント] を適用する方法はありますか。
以下の方法を使用して、各ラベルのフォントを設定できることを知っています
[self.titleLabel setFont:[UIFont fontWithName:@"FONOT_NAME" size:FONT_SIZE]];
しかし、私はアプリケーション全体を変更したいです。知ってる人いたら教えてください。
iPhone Objective-C でアプリケーション全体にグローバル フォント [新しいカスタム フォント] を適用する方法はありますか。
以下の方法を使用して、各ラベルのフォントを設定できることを知っています
[self.titleLabel setFont:[UIFont fontWithName:@"FONOT_NAME" size:FONT_SIZE]];
しかし、私はアプリケーション全体を変更したいです。知ってる人いたら教えてください。
どうやらすべての UILabels を完全に変更するには、UILabel でカテゴリを設定し、デフォルトのフォントを変更する必要があります。だからここにあなたのための解決策があります:
ファイル CustomFontLabel.h を作成します。
@interface UILabel(changeFont)
- (void)awakeFromNib;
-(id)initWithFrame:(CGRect)frame;
@end
ファイル CustomFontLabel.m を作成します。
@implementation UILabel(changeFont)
- (void)awakeFromNib
{
[super awakeFromNib];
[self setFont:[UIFont fontWithName:@"Zapfino" size:12.0]];
}
-(id)initWithFrame:(CGRect)frame
{
id result = [super initWithFrame:frame];
if (result) {
[self setFont:[UIFont fontWithName:@"Zapfino" size:12.0]];
}
return result;
}
@end
今...これらのカスタムフォントラベルが必要なビューコントローラーで、上部に含めるだけです:
#import "CustomFontLabel.h"
それだけです-頑張ってください
カテゴリを使用した Ican のソリューションは、その日を節約するためだけに好まれるかもしれません。ただし、Apple が説明するように、カテゴリを使用して既存のメソッドをオーバーライドすることは 避けてください。カテゴリ メソッド名の衝突を回避する
... カテゴリで宣言されたメソッドの名前が元のクラスのメソッド、または同じクラス (またはスーパークラス) の別のカテゴリのメソッドと同じである場合、どのメソッドの実装に関する動作は未定義です。実行時に使用されます。...
-(id) init;
オーバーライドするよりもオーバーライドする方が安全であることにも注意してください-(id)initWithFrame:(CGRect)frame
。UIButton のラベルをクリックしたときにタッチ イベントを受信しないという問題に直面することはありません。
これはあなたが意味するものですか?
@interface GlobalMethods
+(UIFont *)appFont;
@end
@implementation GlobalMethods
+(UIFont *)appFont{
return [UIFont fontWithName:@"someFontName" size:someFontSize];
}
@end
...
[self.titleLabel setFont:[GlobalMethods appFont]];
どういうわけか自動的に(setFont
各コントロールで使用せずに)やりたい場合は、それが可能だとは思いません。
アプリケーション (またはこの特定の機能) を iOS 5 に制限できる場合、デフォルトの UI を非常に便利にスキンできる新しい API が登場します。私がこれを書いている時点では、まだ NDA の対象となっているため、詳細をお伝えすることはできません。詳細については、iOS 5 ベータ SDK を参照してください。