很抱歉,如果这是一个糟糕的问题,但是。 。 。
我想为我的UIColor创建一个看起来像这样的快捷方式
[UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1]
我可以以某种方式使用#define,以便我可以输入一些快捷方式吗?我试过了,但我觉得我的符号可能不合适了。 。 。
如果#define仅用于常量或由于某种原因在这种情况下不适用,有没有其他方法来快捷方法?
谢谢!
答案 0 :(得分:4)
#define只是一个美化的文本替换系统。如果你定义这样的东西:
#define key value
然后,即使在编译器可以执行任何操作之前,预处理器也会将key
的每一次出现替换为value
。所以你定义的并不重要。你可以使用任何东西作为你的价值,所以你可以做一些像
#define kMyColor [UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1]
但在这种情况下,您可能应该使用静态常量变量:
static const UIColor *myColor = [UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1];
答案 1 :(得分:4)
#define RGBA(r,g,b,a) [UIColor colorWithRed:(r) green:(g) blue:(b) alpha:(a)]
Intead使用:
[UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1]
使用此:
RGBA(0.35,0.79,0.92,1)
看看这个教程: UIColor Shortcuts
答案 2 :(得分:4)
通过你的问题的文字,它不是很清楚,你想要快捷方式 - 一种颜色,RGBA颜色的创建值[0..255]
?
DrummerB回答了第一个,Justin Boo第二个。
我想提出一个适合两者的解决方案:
创建一个可以涵盖两者的类别
[UIColor colorWith255ValuesWithRed: 128 green: 35 blue: 40 alpha:255]
,包装方法,您现在正在使用[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"];
答案 3 :(得分:3)
在UIColor上创建一个类别并定义一个新的类方法(如blackColor,whiteColor等)。这样,您的代码至少适合现有的样式。
+(UIColor*)myColor
{
return [UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1];
}
答案 4 :(得分:1)
如果你愿意,这里是HEX RGB的定义:
#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]
用法:
UIColor *color = UIColorFromRGB(0xe8e600); //0xe8e600 hex representation...