【问题标题】:Defining a Macro for a property that works with different objects?为适用于不同对象的属性定义宏?
【发布时间】:2014-07-24 21:31:19
【问题描述】:

是否可以定义一个宏来设置多个对象的背景颜色等属性?

例如:

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

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

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

【问题讨论】:

  • [myLabel setBackgroundColor:RedColor][myButton setBackgroundColor:RedColor] 有什么问题?
  • 还要检查 UIAppearance 协议 developer.apple.com/library/ios/documentation/uikit/reference/… 。可能它提供了类似于您需要的东西
  • @ahruss 这更像是一个简化的示例,但我的意思是对需要多个输入的更详细的属性(例如我自己定义的属性)使用类似的东西,所以我的代码看起来更干净一点。
  • 我想我们需要更多解释你想要什么。您提出的问题的答案是肯定的,并且做类似#define BackgroundColor(color) setBackgroundColor:color 之类的事情是微不足道的,但我假设这不是您想要的,因为它除了混淆您的代码之外没有做任何事情。

标签: ios objective-c macros c-preprocessor


【解决方案1】:

虽然不建议你这样做,但以下代码对我有用:

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

【讨论】:

    【解决方案2】:

    这是我使用的方法:

    1. 创建头文件Colors.h
    2. 将此头文件导入您的pchfile,以便将其导入您的所有头文件中。
    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. 我认为将这种方法与“颜色样本”结合使用是个好主意,因为大多数应用程序都有一组通过应用程序使用的颜色。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-01
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      相关资源
      最近更新 更多