如何替换现有的UIColors



我正试图为我的应用程序制作一个主题系统。是否有办法重新定义默认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,这是可以理解的,如果我构建它,应用程序将崩溃。

有没有办法做我喜欢做的事?

你会从每个人那里得到序言,我认为:做你想做的是一个坏主意,因为一个叫做blackColor的方法应该返回黑色。方法应该总是有合适的命名

Post-preamble:

使用方法swizling。你不能直接通过声明来实现,但是因为Objective-C运行时是动态的,你可以在运行时切换方法的实现。你需要直接与运行时对话,使用它的C API,但这并不太棘手。

Mike Ash的指南将引导您了解理论并向您展示代码,比我在这里可能要清楚得多。

相关内容

  • 没有找到相关文章

最新更新