2009-10-28 17 views
5

Interface Builderで定数を使用する方法があるかと思います。たとえば、手動で同じ色を別の場所に設定することを避けるためです(非常に退屈な仕事かもしれません...)Interface Builderとコードの間で定数を共有する方法は?

現在、私は設定しています#defineを使用して#defineを使用することはできません。

答えて

-1

これを行う最も簡単な方法は、UIColorクラスにカテゴリを作成して作成することですそのクラスメソッド。たとえば、次のヘッダファイル内

置き、これを(例えばUIColor + CustomColors.h):実装ファイル内

@interface UIColor (CustomColors) 
+ (UIColor *)myCustomColor; 
@end 

置き、これを(例えばUIColor + CustomColors.m)

@implementation UIColor (CustomColors) 
+ (UIColor *)myCustomColor 
{ 
    return [UIColor colorWithRed:0.2 green:0.5 blue:0.2 alpha:1.0]; 
} 
@end 

次に、コード内の任意の場所にあるクラスメソッドにアクセスできます。

... 
self.view.backgroundColor = [UIColor myCustomColor]; 
... 

詳細については、を参照してください。

また、システムカラーパレットを使用してカラーのスウォッチを保存することもできます。これを行うには、単にシステムカラーパレットを呼び出し、色を選択して色のグリッドにドラッグします。

これらの色は、作成するすべてのInterface Builderドキュメントで使用できるようになりましたが、システムカラーパレットを使用するアプリケーションで使用できるようになりました。

color palette http://img.skitch.com/20091030-dhh3tnfw5d8hkynyr7e5q3amwg.png

+0

感謝を持っています。実際には、コードではなくIBで色を設定したいと思います(self.backgroundColor = myColorを避けたい)。しかし、あなたが言及しているように私がカラー・パレットからカスタム・カラーを使用していて、将来的に私のカラーの青の割合を変更したいのであれば、IBのどこでもカスタム・カラー使用されている...私は#defineのソリューションを瞬時に保持しています、それは退屈なリファクタリングの時間を節約します.... – Unfalkster

0

私はアプリ全体で同じスタイルを確保するためのさまざまなコントロールをサブクラス化することにより、この問題に取り組んできました。欠点は、インタフェースビルダーのスタイルをワイヤフレームだけで見ることができないことです。例えば

私はあなたが答えるため

@interface MyButton : UIButton 
@end 


@implementation MyButton 

-(void) initialize{ 
self.backgroundColor = [UIColor MyButonColor]; // Using a category on UIColor 
} 

- (id)initWithFrame:(CGRect)frame{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [self initialize]; 
    } 
    return self; 
} 

- (id)initWithCoder:(NSCoder *)decoder { 
    if (self = [super initWithCoder:decoder]) { 
     [self initialize]; 
    } 
    return self; 
} 
関連する問題