Objective c #定义指令澄清

Objective c #定义指令澄清,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,抱歉,如果这是一个糟糕的问题,但是 我想创建一个UIColor的快捷方式,如下所示 [UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1] 我能不能用一个#define来定义它,这样我就可以键入一些快捷方式?我试过了,但我想我的符号可能不正确 如果#define仅用于常量,或者由于某种原因不适用于这种情况,那么还有其他方法可以简化该方法吗 谢谢 define只是一个美化的文

抱歉,如果这是一个糟糕的问题,但是

我想创建一个UIColor的快捷方式,如下所示

[UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1]
我能不能用一个#define来定义它,这样我就可以键入一些快捷方式?我试过了,但我想我的符号可能不正确

如果#define仅用于常量,或者由于某种原因不适用于这种情况,那么还有其他方法可以简化该方法吗

谢谢

define只是一个美化的文本替换系统。如果您这样定义:

#define 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];
#定义只是一个美化的文本替换系统。如果您这样定义:

#define 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];
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)
请看本教程:

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上创建一个类别,并定义一个新的类方法(如blackColor、whiteColor等)。这样,您的代码至少符合现有样式

+(UIColor*)myColor
{
    return [UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1];
}

在UIColor上创建一个类别并定义一个新的类方法(如blackColor、whiteColor等)。这样,您的代码至少符合现有样式

+(UIColor*)myColor
{
    return [UIColor colorWithRed:(88.0f/255.0f) green:(201.0f/255.0f) blue:(234.0f/255.0f) alpha:1];
}

根据您的问题文本,不太清楚您想要的快捷方式是什么-一种单一颜色,即使用值创建RGBA颜色
[0..255]

鼓手回答第一个问题,贾斯汀·布回答第二个问题

我想提出一个解决方案,既适用于以下两种情况:

创建一个类别,可以涵盖这两个方面

  • [UIColor COLOR WITH255VALUESWITHRED:128绿色:35蓝色:40阿尔法:255]
    ,用于包装您现在使用的方法
  • 创建一个UIColor类方法,该方法将UIColor对象存储在静态NSMutableDictionary中,其中包含它们的名称和计数器部分,您可以调用like
    [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
用法:
登记册

通路

注销


根据您的问题文本,不太清楚您想要的快捷方式是什么-一种单一颜色,即使用值创建RGBA颜色
[0..255]

鼓手回答第一个问题,贾斯汀·布回答第二个问题

我想提出一个解决方案,既适用于以下两种情况:

创建一个类别,可以涵盖这两个方面

  • [UIColor COLOR WITH255VALUESWITHRED:128绿色:35蓝色:40阿尔法:255]
    ,用于包装您现在使用的方法
  • 创建一个UIColor类方法,该方法将UIColor对象存储在静态NSMutableDictionary中,其中包含它们的名称和计数器部分,您可以调用like
    [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
用法:
登记册

通路

注销


如果您愿意,这里有一个十六进制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...

如果您愿意,这里有一个十六进制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...

myColor
必须分配给方法或函数的内部,但这肯定比定义一个看起来像常量但实际上是调用要好。
myColor
必须分配给方法或函数的内部,但这肯定比定义一个看起来像常数但实际上是调用要好。请参考我的答案,了解类似但更动态的定义approach@vikingosegundo好主意!请参考我的答案,以获得类似但更具活力的答案approach@vikingosegundo好主意!