如何在iOS中更新自定义类别(UIColor)?
我已经创建了一个自定义UIColor类,这样我就可以在整个应用程序中轻松更新颜色。我有一个带有各种其他颜色设置的UITableView。我不知道如何根据选择将自定义颜色类更新为新颜色 谢谢你的帮助 为清晰起见,请编辑: 自定义类:如何在iOS中更新自定义类别(UIColor)?,ios,uicolor,Ios,Uicolor,我已经创建了一个自定义UIColor类,这样我就可以在整个应用程序中轻松更新颜色。我有一个带有各种其他颜色设置的UITableView。我不知道如何根据选择将自定义颜色类更新为新颜色 谢谢你的帮助 为清晰起见,请编辑: 自定义类: + (UIColor *)NPSBackgroundColor; + (UIColor *)NPSPrimaryColor; + (UIColor *)NPSSecondaryColor; + (UIColor *)NPSAccentColor; +(UIColo
+ (UIColor *)NPSBackgroundColor;
+ (UIColor *)NPSPrimaryColor;
+ (UIColor *)NPSSecondaryColor;
+ (UIColor *)NPSAccentColor;
+(UIColor *)NPSBackgroundColor{
return [UIColor colorWithRed: 0.909f green: 0.909f blue: 0.909f alpha:1];
}
+(UIColor *)NPSPrimaryColor{
return [UIColor colorWithRed: 0.255 green: 0.357 blue: 0.655 alpha: 1];
}
+(UIColor *)NPSSecondaryColor{
return [UIColor colorWithRed: 0.0f green: 0.0f blue: 0.0f alpha:1];
}
+(UIColor *)NPSAccentColor{
return [UIColor colorWithRed: 0.0f green: 0.0f blue: 0.0f alpha:1];
}
我想在用户点击按钮时更新“primaryColor”一词 您的代码是硬代码,具有无法更改的特定颜色。您需要重新构造代码以返回可以修改的变量。大概是这样的: 你的.h:
@interface UIColor (MyColors)
+ (UIColor *)NPSBackgroundColor;
+ (UIColor *)NPSPrimaryColor;
+ (UIColor *)NPSSecondaryColor;
+ (UIColor *)NPSAccentColor;
+ (void)setNPPrimaryColor:(UIColor *)color;
@end
你的
#import "UIColor+MyColors.h"
static UIColor *NPSBackgroundColor = nil;
static UIColor *NPSPrimaryColor = nil;
static UIColor *NPSSecondaryColor = nil;
static UIColor *NPSAccentColor = nil;
@implementation UIColor (MyColors)
+(UIColor *)NPSBackgroundColor{
if (!NPSBackgroundColor) {
NPSBackgroundColor = [UIColor colorWithRed: 0.909f green: 0.909f blue: 0.909f alpha:1];
}
return NPSBackgroundColor;
}
+(UIColor *)NPSPrimaryColor{
if (!NPSPrimaryColor) {
return [UIColor colorWithRed: 0.255 green: 0.357 blue: 0.655 alpha: 1];
}
return NPSPrimaryColor;
}
+(UIColor *)NPSSecondaryColor{
if (!NPSSecondaryColor) {
return [UIColor colorWithRed: 0.0f green: 0.0f blue: 0.0f alpha:1];
}
return NPSSecondaryColor;
}
+(UIColor *)NPSAccentColor{
if (!NPSAccentColor) {
return [UIColor colorWithRed: 0.0f green: 0.0f blue: 0.0f alpha:1];
}
return NPSAccentColor;
}
+ (void)setNPSPrimaryColor:(UIColor)color {
NPSPrimaryColor = color;
}
@end
请随意添加其他设置者。这个问题非常不清楚。也许发布一些相关的代码,更好地描述您遇到的问题会有所帮助。为clarityAwesome添加了更多信息,感谢RMaddy这么多的工作perfectly@Nathan我承认这是一个解决办法。但我想请您完全避免预期的设计模式。您试图实现的是一个颜色存储库。类别在功能上旨在扩展对象(也可能是类)的功能。即使使用类别,也必须创建自己的存储库(此处以静态变量的形式)。所以我建议你完全避免这个,除非你太想使用一个类别。