たとえば、異なる場所で同じ色を手動で設定することを避けるために、Interface Builder で定数を使用する方法があるかどうか疑問に思います (非常に面倒な作業になる場合があります...)。
現在、コードで色を設定し、#define を使用して色を設定していますが、明らかに IB は #define を使用できません...
アプリ全体で同じスタイルを確保するために、さまざまなコントロールをサブクラス化することで、この問題を回避しました。欠点は、インターフェイスビルダーでスタイルを表示できないのはワイヤフレームだけであるということです。
たとえば、私は
@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;
}
これを行う最も簡単な方法は、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];
...
詳細については、カテゴリに関する Apple のドキュメントを参照してください。
または、システム カラー パレットを使用して色の見本を保存することもできます。これを行うには、システム カラー パレットを呼び出し、色を選択して色のグリッドにドラッグするだけです。
これらの色は、作成するすべての Interface Builder ドキュメントだけでなく、システム カラー パレットを使用するすべてのアプリケーションで使用できるようになりました。
カラーパレット http://img.skitch.com/20091030-dhh3tnfw5d8hkynyr7e5q3amwg.png