CodaFI が言ったように、iOS 5 以降を使用している場合は、既にテーマ機能があります。それはこのように動作します:
<IAppearanceContainer>
クラスにプロトコルを追加します。
変更するプロパティを で装飾しますUI_APPEARANCE_SELECTOR
。例:
@interface UINavigationBar : ...<IAppearanceContainer>
@property(nonatomic,retain) UIColor *tintColor UI_APPEARANCE_SELECTOR;
@終わり
- クラスのすべてのインスタンスの色を変更します。
[[UINavigationBar の外観] setTintColor:[UIColor redColor]];
上記の例は ですが、UINavigationBar
任意のカスタム クラスで機能します。iOS 6.1 ですでにサポートされているオブジェクトを確認するには、ドキュメントを確認するか、次のコマンドを実行します。
cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/Frameworks/UIKit.framework/Headers
grep -H UI_APPEARANCE_SELECTOR ./* | sed 's/ __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0) UI_APPEARANCE_SELECTOR;//'
モジュール式のテーマが必要だとしましょう:
- すべてのフォント、色、音楽などを含む大きな plist ファイルを作成します。これらの各ファイルがテーマになります。
[x appearance] setWhatever:<plist value>]
シングルトンを介してファイルを読み取り、各テーマ対応要素のような行で値を設定します。
- 異なる要素を表示する必要がある同じ要素のインスタンスがある場合は、シングルトンを介してそれらの画像を取得します。
これは、多かれ少なかれ Amit Vyawahare からのヒントです。読みやすいので、xmlの代わりにplistと言いました。本当に必要でない限り、NIB を複製しないでください。