私が他のプロジェクトで使用したアプローチの1つは、ProjectStyle.hファイルを作成することです。このファイルは、カスタム色や他のスタイル関連の定数を定義しています。あなたはそれをインポートする必要があります。
ような何か:もちろん、あなたは、いくつかのUIColorやUIFontオブジェクトの一定のインスタンスを作成したい場合にも対応する.Mファイルを持っている可能性が
ProjectStyles.h
#define RED_HEADER_COLOR [UIColor colorWithRed:0.8f green:0.1f blue:0.1f alpha:0.9f]
#define RED_BACKGROUND_COLOR [UIColor colorWithRed:0.9f green:0.3f blue:0.1f alpha:1.0f]
#define PRIMARY_FONT [UIFont fontWithName:@"HelveticaNeue-Bold" size:12.0f]
、
ProjectStyles.m
+ (UIColor *) redHeaderColor
{ return [UIColor colorWithRed:0.8f green:0.1f blue:0.1f alpha:0.9f]; }
+ (UIColor *) redBackgroundColor
{ return [UIColor colorWithRed:0.9f green:0.3f blue:0.1f alpha:1.0f]; }
+ (UIFont *) primaryFont
{
static UIFont *font = nil;
if (font == nil)
font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:12.0f];
return font;
}
のようなものとヘッダーにあるものを公開する
私がProjectStyleのようなアプローチについて気に入っているもう一つのことは、しばらくするとjusよりも多くのカスタムのものが欲しいということですt色 - カスタムフォント、カスタムラインとシャドウ。これらのすべてのものを配置するためのスタイルクラスまたはヘッダーを持つことで、あらゆる種類のカスタム要素がすでに定義されているかどうかを調べる場所が1つと、後でコーダーがカスタム情報を集中管理できるように# 。
カスタム要素をカテゴリに配置するだけで、いくつかのカテゴリにまたがるカスタマイズと、他のサードパーティライブラリとのカテゴリ名の衝突の可能性(主にリモート)になります。
WWDC 2012セッション216は、誰かが興味を持っている場合、これに非常に似たアプローチを示しています。 – MaxGabriel
いくつかのスタイルシートを使用するパターンは適切ですが、私はいつもそのようなタスクのためにプリプロセッサディレクティブを使用することを控えています - 型定義は型安全ではないので醜いです。なぜ外見の属性(色のような)の工場を使用しないのですか? '[MyAppearance color:@" ultraBlue "]' – Till
のようなものは、他のコードと同じようにスタティックアナライザーとデバッガーによってチェックされる実際のコードになるので、タイプセーフです。 #defineを使用してUIColorを生成しますが、CGColorが必要な場合はすぐに警告が表示されます)。エディタは#defineコードをオートコンプリートするので、MY_COLOR.CGColorはオートコンプリートします。また、#define項目は完全にオートコンプリートされます。あなたの例では、@ "ultraBlue"をタイプしなければならないので、エラーの余地が残ります。 #defineメソッドまたはfactoryメソッドを使用すると、スタイルを簡単に自動補完してエラーを排除する必要があります。 –