Стилизация UILabel с использованием прокси-сервера UIAppearance

У меня есть несколько элементов UILabel в моем приложении, и я ищу простой способ их стилизации с помощью объекта UIAppearance Proxy. Мой текущий подход заключается в создании различных подклассов UILabel, оснащенных декоратором UI_APPEARANCE_SELECTOR, чтобы они были доступны через вызовы [UILabelSubclass appearance]. Вы можете найти источники, которые я использую в качестве справочных здесь и здесь. Проблема в том, что я не хочу устанавливать размер шрифта, а только семейство шрифтов, зависящее от размера, определенного в раскадровке.

Как я могу установить это в подклассе?


person Claus    schedule 02.07.2013    source источник


Ответы (3)


Я думаю, вы можете попробовать в своем подклассе что-то вроде:

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

Вот простая категория, которая работает с прокси 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
person Robert Wijas    schedule 02.07.2013
comment
это тоже отличное решение. Я отметил другой только потому, что он был немного ближе к тому, что я реализовывал. - person Claus; 03.07.2013

Благодаря этому сообщению, а также сообщению в блоге Питера Стейнбергера (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
person Michael    schedule 07.01.2014