Dan*_*cer 6 objective-c uicolor ios
我想定义一个全局颜色,我可以为各种自定义ui单元格的子状态重用它
不确定这是否是正确的方法,但..
我已经定义了一个名为lightGreyUIColor的类,它有这个.h文件 -
#import <UIKit/UIKit.h>
@interface lightGreyUIColor : UIColor
+ (UIColor*)lightGreyBGColor;
@end
Run Code Online (Sandbox Code Playgroud)
还有这个 .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
Run Code Online (Sandbox Code Playgroud)
我已将lightGreyUIColor.h文件包含在tableview的实现文件中,并尝试将其作为folows引用 -
cell.backgroundColor = [UIColor lightGreyBGColor];
Run Code Online (Sandbox Code Playgroud)
这只会为lightgreyBGColor产生一个没有已知的类或方法错误,我哪里出错了,是否有更好的方法来实现全局样式?
Mic*_*lum 24
您应该创建一个类别,而不是子类.这将扩展UIColor类,并为其添加颜色.
.H
#import <UIKit/UIKit.h>
@interface UIColor (CustomColors)
+ (UIColor *)myColorLightGreyBGColor;
@end
Run Code Online (Sandbox Code Playgroud)
.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
Run Code Online (Sandbox Code Playgroud)
通过这种方式定义颜色和#importing类别,您可以按照自己的方式应用此自定义颜色.
Las*_*zlo 10
一个宏怎么样?
#define DEFAULT_COLOR_BLUE [UIColor colorWithRed:.196 green:0.3098 blue:0.52 alpha:1.0]
Run Code Online (Sandbox Code Playgroud)
将它放在appname_Prefix.pch文件中,或者更可能是前缀文件中包含的头文件
这将是:
cell.backgroundColor = DEFAULT_COLOR_BLUE;
Run Code Online (Sandbox Code Playgroud)