为适用于不同对象的属性定义宏?

时间:2014-07-24 21:31:20

标签: ios objective-c macros c-preprocessor

是否可以为多个对象设置属性(如backgroundColor)?

例如:

#define RedColor [UIColor redColor]
#define BackgroundColor(color) [[self class] setBackgroundColor:Color(color)]

这样我就可以在以下情况下使用它:

[myLabel BackgroundColor(RedColor)];
[myButton BackgroundColor(RedColor)];

2 个答案:

答案 0 :(得分:1)

虽然不建议您这样做,但以下代码适用于我:

#define BackgroundColor(color, some_view) [some_view setBackgroundColor:color]

答案 1 :(得分:0)

这是我使用的方法:

  1. 创建标题文件Colors.h
  2. 将此标头文件导入pch文件,以便将其导入所有标头文件。
  3. Colors.h中插入以下内容:

    // RGB颜色宏
    #define RGB(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]

    //带有alpha的RGB颜色宏 #define RGBA(rgbValue,a) [UIColor \ colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \ green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \ blue:((float)(rgbValue & 0xFF))/255.0 alpha:a]

    //颜色样本
    #define COLOR_SWATCH_WHITE RGB(0xFFFFFF)
    #define COLOR_SWATCH_BLACK RGB(0x000000)

    //常数
    #define COLOR_BUTTON_TEXT COLOR_SWATCH_BLACK
    #define COLOR_BUTTON_BACKGROUND COLOR_SWATCH_WHITE

  4. 设置颜色的示例:
    [myLabel setTextColor:COLOR_BUTTON_TEXT];

  5. 我认为使用'Color swatch'这个方法是一个好主意,因为大多数应用程序都有一组在应用程序中使用的一些颜色。