UILabel внешний вид шрифта и атрибутивный строчный шрифт
В моем приложении у меня есть глобальный пользовательский шрифт, который применяется ко всем меткам, например:
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 Бар Баз "Фактические результаты: "Foo Bar Baz"Если я удалю[[UILabel appearance] setFont:]
Линия тогда работает:
(но пользовательский шрифт не установлен на остальной части строки).
Итак, мой вопрос: есть ли способ указать один шрифт, который будет использоваться в качестве приложения по умолчанию для всего приложения, но при этом будет возможность частично его переопределить, используя приписанные строки?
Также, если кто-то может объяснить мне, почему это не работает, я буду признателен.