あなたの質問のテキストでは、ショートカットしたいものは明確ではありません.1つの色、値を持つRGBA色の作成[0..255]
ですか?
DrummerB が最初に答え、Justin Boo が 2 番目に答えました。
両方に適したソリューションを提案したいと思います。
両方をカバーできるカテゴリを作成します
[UIColor colorWith255ValuesWithRed: 128 green: 35 blue: 40 alpha:255]
、それはあなたが今使っているメソッドをラップします
- UIColor オブジェクトを名前とカウンター部分とともに静的な NSMutableDictionary に格納する UIColor クラス メソッドを作成します。次のように呼び出します。
[UIColor registeredColorWithName:@"activeForegroundColor"]
カラーレジスタのアイデアのサンプルコードを書きました:
UIColor+Register.h
#import <UIKit/UIKit.h>
@interface UIColor (Register)
+(void)registerColor:(UIColor *)color
forName:(NSString *)name;
+(UIColor *)registeredColorForName:(NSString *)name;
+(void)unregisterColorForName:(NSString *)name;
@end
UIColor+Register.m
#import "UIColor+Register.h"
@interface UIColor (RegisterPrivate)
+(NSMutableDictionary *)colorRegister;
@end
@implementation UIColor (RegisterPrivate)
+(NSMutableDictionary *)colorRegister
{
static dispatch_once_t once;
static NSMutableDictionary *register_;
dispatch_once(&once, ^{
register_ = [NSMutableDictionary dictionary];
});
return register_;
}
@end
@implementation UIColor (Register)
+(void)registerColor:(UIColor *)color
forName:(NSString *)name
{
[[self colorRegister] setObject:color forKey:name];
}
+(UIColor *)registeredColorForName:(NSString *)name
{
return [[self colorRegister] objectForKey:name];
}
+(void)unregisterColorForName:(NSString *)name
{
[[self colorRegister] removeObjectForKey:name];
}
@end
使用法:
登録
[UIColor registerColor:[UIColor redColor] forName:@"activeColor"];
[UIColor registerColor:[UIColor grayColor] forName:@"passiveColor"];
アクセス
[view1 setBackgroundColor:[UIColor registeredColorForName:@"passiveColor"]];
[view2 setBackgroundColor:[UIColor registeredColorForName:@"activeColor"]];
登録解除
[UIColor unregisterColorForName:@"activeColor"];