5

我想创建一些UIColor在我的应用程序中使用的新 s。不时地对 RGB 进行微调(确切的颜色阴影正在争论中)

目前我必须从 RGB 中创建新的颜色,并且代码被洒满并重复。

有没有更好的方法可以让我创建一种新的颜色并在我的应用程序中使用它。

[UIColor myNewCustomRedColor]

这里最好的模式是什么 - Category 是正确的选择 - 如果是这样,如何?如果没有 - 推荐的方法是什么。

4

2 回答 2

9

对于这样的事情,类别是一个不错的选择。我通常只制作一个新的 .h/.m 文件对,MyCategories.h/ MyCategories.m,其中包含您想要的常用类别。

MyCategories.h:

@interface UIColor (MyCategory)

+ (UIColor *)customRedColor;

@end

我的类别.m

@implementation UIColor (MyCategory)

+ (UIColor *)customRedColor {
    return [UIColor redColor];
}

@end

您可以在任何需要的地方导入 .h 文件,也可以将导入粘贴在 MyApp-Prefix.pch 文件中。

于 2013-02-17T01:43:32.183 回答
5

我在其他项目中使用的一种方法是创建一个 ProjectStyle.h 文件,其中包含自定义颜色的#defines 和其他与样式相关的常量。你只需要导入它。

就像是:

ProjectStyles.h

#define RED_HEADER_COLOR [UIColor colorWithRed:0.8f green:0.1f blue:0.1f alpha:0.9f]
#define RED_BACKGROUND_COLOR [UIColor colorWithRed:0.9f green:0.3f blue:0.1f alpha:1.0f]
#define PRIMARY_FONT [UIFont fontWithName:@"HelveticaNeue-Bold" size:12.0f]

如果你想创建一些 UIColor 或 UIFont 对象的常量实例,你也可以有一个相应的 .m 文件,比如

ProjectStyles.m

+ (UIColor *) redHeaderColor 
{  return [UIColor colorWithRed:0.8f green:0.1f blue:0.1f alpha:0.9f];  }

+ (UIColor *) redBackgroundColor 
{  return [UIColor colorWithRed:0.9f green:0.3f blue:0.1f alpha:1.0f];  }

+ (UIFont *) primaryFont
{
    static UIFont *font = nil;
    if ( font == nil )
        font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:12.0f];
    return font;
}

然后当然要在标题中公开那些

我喜欢 ProjectStyle 方法的另一件事是,一段时间后,您将需要更多自定义的东西,而不仅仅是颜色 - 自定义字体、自定义线条和阴影。有一个 Style 类或标题来放置所有这些东西,让您可以在一个地方查找已经为各种事物定义的自定义元素,以及一个非常明显的#import,供以后的编码人员跟踪您集中的自定义信息.

如果您只是将自定义元素放在类别中,那么您最终会在多个类别中进行自定义,并且类别名称与其他第三方库发生冲突的可能性(大部分是远程的)。

于 2013-02-17T01:38:05.727 回答