В моем приложении у меня есть глобальный пользовательский шрифт, применяемый ко всем ярлыкам:
UIFont *font = [UIFont fontWithName:kMyFontName size:15.0];
[[UILabel appearance] setFont:font];
Это прекрасно работает. Однако в некоторых случаях я хочу иметь возможность указывать другой шрифт для определенного региона строки UILabel.
Итак, у меня есть что-то вроде этого:
NSString *string = @"Foo Bar Baz";
UIFont *boldFont = [UIFont fontWithName:kMyBoldFontName size:15.0];
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:string];
[attrString setAttributes:@{ NSFontAttributeName: boldFont } range:NSMakeRange(0, 3)];
self.myLabel.attributedText = attrString;
Однако это не работает. Я ожидаю, что "Foo" будет полужирным, но вся строка просто имеет шрифт по умолчанию. Как будто полужирный шрифт вообще не применяется и перезаписывается шрифтом, установленным в прокси-сервере UILabel.
Когда я удаляю строку видимости UILabel, она работает нормально (я вижу часть строки, выделенную полужирным шрифтом). В принципе, я хочу, чтобы мой пользовательский шрифт применялся к метке, но отдельный шрифт применялся к другой области строки. Обычно это отлично работает с атрибутами строк, но по какой-то причине установка шрифта внешнего вида UILabel отключает эту функциональность (или так кажется).
- Ожидаемые результаты: Foo Bar Baz "
- Фактические результаты: "Foo Bar Baz"
Если я удаляю строку [[UILabel appearance] setFont:]
, то она работает:
- " Foo Bar Baz"
(но пользовательский шрифт не устанавливается в остальной части строки).
Итак, мой вопрос: есть ли способ указать один шрифт, который будет использоваться в качестве по умолчанию для приложения, но все же может частично переопределить это, используя атрибутные строки?
Также, если кто-то может объяснить мне, почему это не работает, я был бы признателен.