定义全局颜色

时间:2013-11-21 12:31:47

标签: ios objective-c uicolor

我想定义一个全局颜色,我可以为各种自定义ui单元格的子状态重复使用

不确定这是否是正确的方法,但是..

我已经定义了一个名为lightGreyUIColor的类,它有一个.h文件 -

#import <UIKit/UIKit.h>

@interface lightGreyUIColor : UIColor
+ (UIColor*)lightGreyBGColor;

@end

这个。 m档 -

#import "lightGreyUIColor.h"

@implementation lightGreyUIColor

+ (UIColor*)lightGreyBGColor {
return [UIColor colorWithRed:241.0/255.0 green:241/255.0 blue:241/255.0 alpha:1];
}

@end

我已将lightGreyUIColor.h文件包含在tableview的实现文件中,并尝试将其作为folows引用 -

        cell.backgroundColor = [UIColor lightGreyBGColor];

这只会为lightgreyBGColor产生一个没有已知的类或方法错误,我在哪里出错并且有更好的方法来实现一个全局样式吗?

5 个答案:

答案 0 :(得分:24)

您应该创建一个类别,而不是子类。这将扩展UIColor类,并为其添加颜色。

·H

#import <UIKit/UIKit.h>

@interface UIColor (CustomColors)

+ (UIColor *)myColorLightGreyBGColor;

@end

的.m

#import "UIColor+CustomColors.h"

@implementation UIColor (CustomColors)



+ (UIColor *)myColorLightGreyBGColor {

    static UIColor *lightGreyBGColor;

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        lightGreyBGColor = [UIColor colorWithRed:241.0 / 255.0 
                                           green:241.0 / 255.0
                                            blue:241.0 / 255.0 
                                           alpha:1.0];
    });

    return lightGreyBGColor;
}

@end

通过这种方式定义颜色,并#importing类别,您可以按照自己的方式应用此自定义颜色。

答案 1 :(得分:10)

宏怎么样?

#define DEFAULT_COLOR_BLUE [UIColor colorWithRed:.196 green:0.3098 blue:0.52 alpha:1.0]

将它放在appname_Prefix.pch文件中,或者更可能是前缀文件中包含的头文件

它会像:

cell.backgroundColor = DEFAULT_COLOR_BLUE;

答案 2 :(得分:2)

您的班级名称为lightGreyUIColor

因此您需要将其用作

cell.backgroundColor = [lightGreyUIColor lightGreyBGColor];

或者您需要在UIColor上创建一个类别。


编辑:

您的代码[UIColor lightGreyBGColor]尝试在UIColor本身中搜索该方法,但您已UIColorlightGrayUIColor的子类。

正如您所说,看起来您打算选择一个类别。

旁注:ClassName应为LightGreyUIColor

答案 3 :(得分:1)

您需要的是一个类别。阅读它here

在你的情况下,你会有类似的东西 的UIColor + Grey.h

@interface UIColor (Grey) 

+(UIColor*) lightGreyBGColor;
@end

的UIColor + Grey.m

#import "UIColor+Grey.h"

@implementation UIColor (Grey)

+(UIColor*) lightGreyBGColor {
     //define color
}

然后,在您的控制器中,您将其调用为:

cell.backgroundColor = [UIColor lightGreyBGColor];

答案 4 :(得分:0)

对此进行更新,您现在可以在Asset Catalog中创建自定义颜色,然后在Interface Builder中可以看到这些颜色。看到 https://help.apple.com/xcode/mac/current/#/dev10510b1f7

在资产目录中单击+,然后选择新颜色集:

Color Asset Catalog

以及在Interface Builder中...

enter image description here