【问题标题】:How to replace existing UIColors如何替换现有的 UIColors
【发布时间】:2014-03-19 20:14:48
【问题描述】:

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

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

【问题讨论】:

    标签: subclass uicolor redefine


    【解决方案1】:

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

    后序言:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多