2009-03-23 5 views
3

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

Я пытаюсь отобразить несколько строк с UILabel, но по умолчанию слишком узкий. (\ n \ n является слишком широким)

Если нет способа, то мне нужно создать несколько UILabels, но это кажется немного переборщиком.

+0

UILabel не то, что вы хотите. UILabel даже не подчиняется лидерству в UIFont. – jamie

ответ

2

Думаю, вы не можете этого сделать. UIFont довольно сильно ограничен.

Если у вас есть линии на месте, то это довольно тривиально, чтобы нарисовать строку самостоятельно, а не создавать несколько UILabels. Вы можете генерировать подстроки с использованием – componentsSeparatedByString: и рендеринга каждого из них с указанными ведущими приращениями с помощью добавления UIKit NSString: – drawAtPoint:withFont:.

Если вам нужно сгенерировать свою собственную упаковку, это сложно - см. this related question.

-2

Это можно сделать, разбив пользовательскую категорию на UIFont и заменив свойство для загрузки пользовательским установщиком. Я все еще пытаюсь это сделать.

+0

Нет, это невозможно. Кроме того, лидерство было устарело в OS4 –

1

Существует способ настройки межстрочного интервала в многострочной линии UILabel. Вместо использования атрибута text метки используйте свойство attributedText. Приписанный текст может иметь стиль абзаца с отрицательным значением lineSpacing, чтобы линии были ближе друг к другу. Вот пример:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
paragraphStyle.lineSpacing = -4; 

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:yourStringHere]; 
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, titleText.length)]; 
yourUILabel.attributedText = attributedString; 
Смежные вопросы