0

我正在尝试为我的应用程序制作一个主题系统。有没有办法重新定义默认的 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,如果我构建它,应用程序将会崩溃。

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

4

1 回答 1

1

我认为你会从每个人那里得到的序言:做你想做的事情是一个坏主意,因为调用的方法blackColor应该返回黑色。方法应始终适当命名。

后序言:

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

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

于 2014-03-19T20:19:06.183 回答