2015-08-22 4 views
0

Я использую NSAttributedString, чтобы сделать раздел UILabel полужирным шрифтом, и я смотрел, как я могу масштабировать шрифт в разных классах.Масштабирование NSAttributedString с классами размеров в iOS

Единственный способ, которым я могу себе видеть, чтобы сделать это, чтобы использовать существующий размер шрифта метки при добавлении атрибута:

CGFloat fontSize = self.label.font.pointSize; 
NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@"Abc Abc"]; 
[string addAttribute:NSFontAttributeName 
        value:[UIFont boldSystemFontOfSize:fontSize] 
        range:NSMakeRange(0,3)]; 
self.label.attributedText = string; 

Для уточнения:label является UILabel обычным шрифтом системы , а атрибутная строка используется, чтобы сделать первые 3 буквы полужирным.

Это работает достаточно хорошо, но связывает создание атрибутной строки с меткой. Есть ли способ масштабировать присланную строку, не зная размер шрифта спереди?

+0

Я использую атрибутированные помехи все время, и я никогда не объявляю шрифт для UILabel при создании метки, если я использую атрибутированную строку. Я не уверен, что понимаю, что вы делаете, поскольку метка меняет размер на атрибутную строку, пока вы не устанавливаете размер шрифта или обычный текст в строку – Loxx

+0

. Я добавил пояснение ниже этого примера. UILabel имеет обычный шрифт, и я хочу сделать его частью жирным шрифтом, который я не думаю, что могу сделать в iOS без установки всего атрибута шрифта. –

+0

О, я вижу, да, поэтому вы либо используете атрибут AttributedString для установки текста, либо вы устанавливаете текст только обычным способом. Я никогда не делал этого как «половину и половину» операции, если вы не устанавливаете что-либо для метки, но вы просто устанавливаете свойство attributedText, тогда метка меняет размер так, как должна, я могу показать вам пример с отладчиком что является ОГРОМНЫМ и использует тонну атрибутных свойств строки, а затем записывает шрифт UILabel, который соответствует шрифту атрибута, если вы хотите его увидеть. Дай мне знать. – Loxx

ответ

0

После обсуждения с @Larcerax, я обнаружил, что я мог бы использовать автосокращения свойство на моем UILabel в Interface Builder, чтобы гарантировать шрифт масштабируется вниз соответственно, что дает (несколько грязный) решение с использованием неприличия большой максимальный шрифт размер которого можно уменьшить:

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@"Abc Abc"]; 
[string addAttribute:NSFontAttributeName 
       value:[UIFont boldSystemFontOfSize:200.0] 
       range:NSMakeRange(0,3)]; 
self.label.attributedText = string; 

Это требует определения максимального размера загодя.

Смежные вопросы