30

テーマ用にカスタム定義された色がいくつかある iPhone アプリケーションがあります。これらの色は UI 用に固定されるため、含まれるクラス (Constants.h および Constants.m) で色を定義したいと考えています。それ、どうやったら出来るの?(UIColors は変更可能であり、エラーが発生するため、単純に定義するだけでは機能しません - Initalizer は定数ではありません)。

/* Constants.h */
extern UIColor *test;

/* Constants.m */
UIColor *test = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];

ありがとう!

4

7 に答える 7

48

UIColorは変更できません。私は通常、色、フォント、画像を使ってこれを行います。シングルトンを使用するように、または静的初期化子を使用するように簡単に変更できます。

@interface UIColor (MyProject)

+(UIColor *) colorForSomePurpose;

@end

@implementation UIColor (MyProject)

+(UIColor *) colorForSomePurpose { return [UIColor colorWithRed:0.6 green:0.8 blue:1.0 alpha:1.0]; }

@end
于 2010-05-13T04:18:01.060 に答える
32

簡単にするために、私はこれをしました:

/* Constants.h */
#define myColor [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0]

「;」を忘れないでください。通常の表現として使用できます。

このアプローチに技術的な問題があるかどうかはわかりませんが、問題なく動作し、コンパイル時の定数初期化エラーを回避します。実際に使用するまでコンパイルします。

于 2013-05-01T13:29:56.307 に答える
14

別のオプション

あなたの.hでできること

extern UIColor *  const COLOR_LIGHT_BLUE;

あなたの.mmでできること

UIColor* const COLOR_LIGHT_BLUE = [[UIColor alloc] initWithRed:21.0f/255 green:180.0f/255  blue:1 alpha:1];//;#15B4FF
于 2012-01-06T15:38:20.940 に答える
0

多くの場合、グローバル定数をシングルトンオブジェクトに入れます。または、先に述べたように、あるクラスのクラスメソッドを介してそれらにアクセスできるようにすることができます。

于 2010-05-13T04:20:51.097 に答える
0

別の方法は次のとおりです。

ヘッダ:

#if !defined(COLORS_EXTERN)
    #define COLORS_EXTERN extern
#endif

COLORS_EXTERN UIColor *aGlobalColor;

実装:

#define COLORS_EXTERN
#import "GlobalColors.h"


@interface GlobalColors : NSObject
@end

@implementation GlobalColors

+ (void)load
{
    aGlobalColor = [UIColor colorWithRed:0.2 green:0.3 blue:0.4 alpha:1];
}

@end

少しハックですが、実装で色を再定義する必要はなく、メソッド呼び出しなしで色にアクセスできます。

于 2014-12-04T10:14:30.643 に答える
-2

AppControllerを使用して、静的変数ではなく、グローバルに色にアクセスできるようにします。そうすれば、アーキテクチャの観点からは理にかなっています。また、実行中であっても、仮想的に配色を変更したい場合は、これはAppControllerの1つまたは2つのメソッドになります。

于 2010-05-13T04:25:03.647 に答える