Определение глобального цвета

Я хочу определить глобальный цвет, который я могу использовать для downstate для различных пользовательских ячеек ui

не уверен, если это правильный способ сделать это, но..

Я определил класс под названием lightGreyUIColor, который имеет это .файл H -

#import <UIKit/UIKit.h>

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

@end

и этого . файл м -

#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, где я ошибаюсь и есть ли лучший способ реализовать глобальный стиль, чем это?

4 ответов


вы должны создать Категорию, а не подкласс. Это расширит класс UIColor и добавит к нему ваши цвета.

.h

#import <UIKit/UIKit.h>

@interface UIColor (CustomColors)

+ (UIColor *)myColorLightGreyBGColor;

@end

#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

определив свои цвета таким образом и #импортируя категорию, вы можете применить этот пользовательский цвет так, как вы уже пытались.


Как насчет макро?

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

поместите его в свой appname_Prefix.PCH-файл или, скорее, файл заголовка, включенный в ваш префиксный файл

и это будет так:

cell.backgroundColor = DEFAULT_COLOR_BLUE;

ваше имя класс lightGreyUIColor

следовательно, вам нужно использовать его как

cell.backgroundColor = [lightGreyUIColor lightGreyBGColor];

или вам нужно создать Категорию на UIColor.


EDIT:

код [UIColor lightGreyBGColor] пытается найти метод в UIColor сам, однако вы подклассы UIColor by lightGrayUIColor.

как вы звоните, похоже, вы предназначены для категории.

боковое Примечание: ClassName должно быть captial как LightGreyUIColor.


то, что вам нужно-это категория. Читайте об этом здесь

в вашем случае у вас было бы что-то вроде
UIColor+Серый.h

@interface UIColor (Grey) 

+(UIColor*) lightGreyBGColor;
@end

UIColor+Серый.м

#import "UIColor+Grey.h"

@implementation UIColor (Grey)

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

затем в вашем контроллере вы вызовете его как:

cell.backgroundColor = [UIColor lightGreyBGColor];