使用UIAppearance代理设置UILabel样式

时间:2013-07-02 17:51:33

标签: ios uilabel uifont uiappearance

我的应用程序中有许多UILabel元素,我正在寻找一种使用UIAppearance Proxy对象设置样式的简单方法。我目前的方法是创建配备UI_APPEARANCE_SELECTOR装饰器的UILabel的不同子类,以便通过[UILabelSubclass appearance]调用访问。您可以找到我用作参考herehere的来源。 问题是我不想设置字体大小,只需要依赖于Storyboard中定义的大小的字体系列。

如何在子类中设置它?

3 个答案:

答案 0 :(得分:7)

这是一个适用于UIAppearance代理的简单类别:

@interface UILabel (FontName)

- (void)setFontName:(NSString *)name UI_APPEARANCE_SELECTOR;

@end


@implementation UILabel (FontName)

- (void)setFontName:(NSString *)name {
    self.font = [UIFont fontWithName:name size:self.font.pointSize];
}

@end

答案 1 :(得分:1)

我认为你可以在你的子类中尝试类似:

UIFont *newFont = [UIFont fontWithName:@"YourFontName" size:self.font.pointSize];
self.font = newFont

答案 2 :(得分:1)

感谢这篇文章,以及Peter Steinberger的博客文章(http://petersteinberger.com/),我能够得到一些对我有用的东西:

@interface UILabel (FontAppearance)
@property (nonatomic, copy) UIFont *appearanceFont UI_APPEARANCE_SELECTOR;
@end


@implementation UILabel (FontAppearance)
- (void)setAppearanceFont:(UIFont*)font
{
    [self setFont:font];
}

-(UIFont*)appearanceFont
{
    return [self font];
}
@end