我正在尝试为我的应用制作主题系统。有没有办法重新定义默认的UIColors?我已经尝试将UIColor子类化了:
//.h file
#import <UIKit/UIKit.h>
@interface UIColor(UIColor_themeColor)
+ (UIColor *)blackColor;
@end
//.m file
#import "UIColor+themeColor.h"
#import "DeviceColor.h"
@implementation UIColor(UIColor_themeColor)
+ (UIColor *)blackColor {
return [self blackColor];
}
@end
然后我收到警告Category is implementing a method which will also be implemented by its primary class
,这是可以理解的,如果我构建它,应用程序将崩溃。
有没有办法做我喜欢做的事情?
答案 0 :(得分:1)
你会从每个人那里得到的序言,我认为:做你想做的事情是一个坏主意,因为一个名为blackColor
的方法应该返回黑色。应始终适当地命名方法。
后前导码:
使用方法调配。您无法通过声明直接执行此操作,但由于Objective-C运行时是动态的,因此您可以在运行时切换方法的实现。您需要使用其C API直接与the runtime对话,但这并不太棘手。
Mike Ash's指南引导您完成理论并向您展示代码,比我可能在此处更清楚。