Определение глобального цвета
Я хочу определить глобальный цвет, который я могу использовать для 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];