mob*_*bob 60 cocoa-touch const objective-c uicolor
我想做这样的事情,但我不能得到合作的语法.
static const UIColor *colorNavbar = [UIColor colorWithRed: 197.0/255.0 green: 169.0/255.0 blue: 140.0/255.0 alpha: 1.0];
Run Code Online (Sandbox Code Playgroud)
我想我可以定义宏,但它们很难看.
jas*_*ord 125
我喜欢使用类别来扩展具有此类事物的新方法的类.这是我刚才写的代码的摘录:
@implementation UIColor (Extensions)
+ (UIColor *)colorWithHueDegrees:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness {
return [UIColor colorWithHue:(hue/360) saturation:saturation brightness:brightness alpha:1.0];
}
+ (UIColor *)aquaColor {
return [UIColor colorWithHueDegrees:210 saturation:1.0 brightness:1.0];
}
+ (UIColor *)paleYellowColor {
return [UIColor colorWithHueDegrees:60 saturation:0.2 brightness:1.0];
}
@end
Run Code Online (Sandbox Code Playgroud)
现在在代码中我可以做以下事情:
self.view.backgroundColor = highlight? [UIColor paleYellowColor] : [UIColor whitecolor];
Run Code Online (Sandbox Code Playgroud)
我自己定义的颜色与系统定义的颜色一致.
(顺便说一下,我开始考虑HSB而不是RGB,因为我更注重颜色.)
关于预先计算价值的更新:我的预感是它不值得.但如果您真的想要,可以使用静态变量来记忆值:
+ (UIColor *)paleYellowColor {
static UIColor *color = nil;
if (!color) color = [UIColor colorWithHueDegrees:60 saturation:0.2 brightness:1.0];
return color;
}
Run Code Online (Sandbox Code Playgroud)
你也可以让宏做备忘录.
dra*_*ard 35
我通常为每个项目制作一个UIColor类别:
@interface UIColor (ProjectName)
+(UIColor *) colorForSomeTable;
+(UIColor *) colorForSomeControl;
+(UIColor *) colorForSomeText;
@end
Run Code Online (Sandbox Code Playgroud)
使用实现中的常量:
@implementation UIColor (ProjectName)
+(UIColor *) colorForSomeTable { return [UIColor colorWithRed:...]; }
@end
Run Code Online (Sandbox Code Playgroud)
我也根据需要为UIFont和UIImage做同样的事情.
Jer*_*myP 11
要扩展jasoncrawford的答案(我将其作为注释,但你不能在注释中格式化代码),如果你想预先计算值(或只做一次).
+ (UIColor *)paleYellowColor
{
static UIColor* paleYellow = nil;
if (paleYellow == nil)
{
paleYellow = [UIColor colorWithHueDegrees:60 saturation:0.2 brightness:1.0];
}
return paleYellow;
}
Run Code Online (Sandbox Code Playgroud)
您的原始想法不起作用的原因是因为编译器只能使用函数之外的初始化程序,而不能使用普通代码.你可以通过初始化方法达到你想要的东西,例如
static UIColor* colorNavBar = nil;
+(void) initialize
{
if (colorNavBar != nil)
{
colorNavBar = ....
}
}
Run Code Online (Sandbox Code Playgroud)
NB const原始定义上的限定符是多余的,因为UIColor无论如何都是不可变的.
小智 11
您可以像这样"定义"类似的CONSTANT:
#define FAV_COLOR [UIColor colorWithRed:24/255.0f green:89/255.0f blue:36/255.0f alpha:0.9]
Run Code Online (Sandbox Code Playgroud)
并按名称调用它,就像你习惯常量一样: FAV_COLOR
希望有所帮助.
你可以这样做:
#define backgroundColorApp [UIColor colorWithRed: 197.0/255.0 green: 169.0/255.0 blue: 140.0/255.0 alpha: 1.0]
Run Code Online (Sandbox Code Playgroud)
在Swift中:定义扩展
extension UIColor {
class func XXXWhiteColor() -> UIColor {
return UIColor(red: 256, green: 256, blue: 256, alpha: 1.0)
}
class func XXXGreenColor() -> UIColor {
return UIColor(red: 73/255.0, green: 212/255.0, blue: 86/255.0, alpha: 1.0)
}
}
Run Code Online (Sandbox Code Playgroud)
使用方法如下:Label.background = UIColor.XXXWhiteColor()
| 归档时间: |
|
| 查看次数: |
44947 次 |
| 最近记录: |