5

UIColorアプリ全体で使用されるいくつかの新しい を作成したいと思います。時々、RGB がわずかに微調整されます (正確な色合いは議論されています)。

現在、RGB から新しい色を作成する必要があり、コードがあちこちに散らばって繰り返されています。

新しい色を作成し、それをアプリ全体で使用できるより良い方法はありますか?

[UIColor myNewCustomRedColor]

ここで最適なパターンは何ですか? カテゴリは正しい選択ですか? 正しい場合、どのように選択しますか? いいえの場合 - 推奨されるアプローチは何ですか。

4

2 に答える 2

9

カテゴリは、このようなものに適しています。私は通常、新しい .h/.m ファイルのペア / を作成MyCategories.hしますMyCategories.m。これには、どこでも必要な一般的に使用されるカテゴリが含まれています。

MyCategories.h:

@interface UIColor (MyCategory)

+ (UIColor *)customRedColor;

@end

MyCategories.m

@implementation UIColor (MyCategory)

+ (UIColor *)customRedColor {
    return [UIColor redColor];
}

@end

必要な場所に .h ファイルをインポートするか、インポートを MyApp-Prefix.pch ファイルに貼り付けることができます。

于 2013-02-17T01:43:32.183 に答える
5

私が他のプロジェクトで使用したアプローチの 1 つは、ProjectStyle.h ファイルを作成することです。このファイルには、カスタム カラーやその他のスタイル関連の定数の #defines が含まれています。インポートするだけです。

何かのようなもの:

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]

UIColor または UIFont オブジェクトの定数インスタンスを作成する場合は、対応する .m ファイルを作成することもできます。

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 のようなアプローチで私が気に入っているもう 1 つの点は、しばらくすると、色だけでなく、カスタム フォント、カスタム ライン、シャドウなどのカスタムが必要になることです。これらすべてのものを配置する Style クラスまたはヘッダーを持つことで、あらゆる種類のものに対して既に定義されているカスタム要素を 1 か所で検索できます。また、後のコーダーがカスタム情報を一元化してフォローバックするための非常に明白な #import が提供されます。 .

カスタム要素をカテゴリに配置するだけでは、カスタマイズが複数のカテゴリに広がり、他のサードパーティ ライブラリとのカテゴリ名の衝突の可能性 (ほとんどの場合リモート) になります。

于 2013-02-17T01:38:05.727 に答える