ios - 通过子类化 UILabel 以在 Storyboard 上使用的标准文本颜色 - (IBOutlet)

标签 ios objective-c uilabel subclass

我希望在我的应用程序中创建一个标准的外观和感觉,其中一些 UILabel有一个特定的textColor .

我有几个 UILabel在我的 UIViewController ,并在 viewDidLoad方法我正在调用一个设置 textColor 的函数属性(property):

[[CHToolKit sharedToolkit] uiLabelAppearanceFeatured:[self IBOLabelStepsRemaining]];
CHToolkit是我为杂项任务创建的单例。

而且,上面的效果很好。但是我必须在需要 UILabel 的任何地方执行此操作带有自定义颜色。现在,我想到更谨慎的做法是将UILabel 子类化。 , (我称之为 CHLabel )创建我自己的实例,并在它的 init 方法中定义 textColor那里。然后,当向我的 VC 添加新的 UILabel 时,我可以选择我的自定义类而不是 UILabel .

我的自定义执行UILabel简单如下:
#import "CHToolKit.h"
#import "CHLabel.h"

@implementation CHLabel

- (CHLabel *)init {

    if (self = [super init]) {
        [self setTextColor:kColourDefaultAppColourText];
    }

    return self;

} // init

@end

所以,当我拖动 UILabel在我的 Storyboard上(在 Interface Builder 中)然后我选择 CHLabel , (替换 UILabel )来自自定义类部分。而这,它允许我这样做。

现在,在运行时,我会期待我的 CHLabel有不同的颜色,即在我的自定义类中定义的颜色。但它 .它保持黑色,或在 IB 中设置的任何颜色。

知道我做错了什么吗?

最佳答案

那是因为在 init 方法中还没有初始化任何 UI 对象。您需要在 awakeFromNib 方法中执行此操作。

-(void)awakeFromNib {
    [super awakeFromNib];
    [self setTextColor:kColourDefaultAppColourText];
}

或者你可以使用外观。将其设置在例如。 didFinishLaunchingWithOptions 方法与您的子类:
[[CHLabel appearance] setTextColor:kColourDefaultAppColourText];

关于ios - 通过子类化 UILabel 以在 Storyboard 上使用的标准文本颜色 - (IBOutlet),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30298934/

相关文章:

ios - UICollectionView 单元格 : is it safe to bring cell. selectedBackgroundView 到前面?

ios - 点击本地通知 iOS

objective-c - 如何解决错误 : linker command failed with exit code 1 (use -v to see invocation) in Xcode5

iOS - 具有自定义字体和动态大小的 UILabel

objective-c - Emojis 搞乱了 obj-c 的 sizeWithFont 数学

ios - 导航栏中未显示栏按钮项

ios - Mapbox 注释层旋转在 map 缩放或移动时重置

objective-c - 子上下文中与 NSManagedObject 的绑定(bind)仅适用于新对象

iphone - iOS 5 中 UILabel 的多色

ios - 如何在 UIScrollview 中重新排列和删除 UIView,就像在 iOS 主屏幕中重新排列应用程序一样