4

重複の可能性:
UIColor定数を定義するObjective C

アプリ全体でいくつかの色を使用したいと思います。すべてのインスタンスまたはすべてのviewControllerでUIColorを作成する代わりに、アプリ全体でUIColorを使用できる方法があります。

または、ColourConstants.hヘッダーファイルを使用するのが賢明です。ここで、使用する各色を#定義します。

すなわち

#define SCARLET [UIColor colorWithRed:207.0/255.0 green:47.0/255.0 blue:40.0/255.0 alpha:1];

前もって感謝します!

4

2 に答える 2

24

UIColorのカテゴリを使用します。例えば:

// In UIColor+ScarletColor.h

@interface UIColor (ScarletColor)

+ (UIColor*)scarletColor;

@end


// In UIColor+ScarletColor.m

@implementation UIColor (ScarletColor)

+ (UIColor*)scarletColor {
    return [UIColor colorWithRed:207.0/255.0 green:47.0/255.0 blue:40.0/255.0 alpha:1];
}

@end

そして、あなたが色を使いたいとき、あなたはこれをする必要があるだけです:

#import "UIColor+ScarletColor.h"

....

UIColor *scarlet = [UIColor scarletColor];

それが役に立てば幸い!!

于 2012-04-09T17:12:46.207 に答える
2

マクロは1つの場所でのみ定義されるため、より便利です。

ただし、マクロはプリプロセッサの単なるテキスト置換であるため、使用するたびに新しいインスタンスが作成されます。

一意のインスタンスが必要な場合は、を使用する必要がありますFOUNDATION_EXPORT(つまりextern)。

パブリック.hファイルで、次のことを宣言します。

FOUNDATION_EXPORT UIColor * scarlet;

これは、 (プログラムがリンクされているとき)ある時点で(scarletタイプの)変数が存在することをコンパイラーに通知します。 だからそれはあなたがそれを使うことを可能にするでしょう。UIColor

次に、その変数を.mファイルに作成する必要があります。
実行時の値であるため、その値を直接割り当てることはできないため、nilに設定するだけです。

UIColor * scarlet = nil;

次に、プログラムのある時点(おそらくアプリのデリゲート)で、その値を設定します。

scarlet = [ [ UIColor ... ] retain ];

これは、プログラムの存続期間全体にわたって存続する必要があるグローバル変数であるため、保持することを忘れないでください。

このように、どこからでもアクセスできるインスタンスは1つだけです。

于 2012-04-09T17:00:41.617 に答える