Один ярлык, два разных шрифта? - PullRequest
2 голосов
/ 26 апреля 2010

Мне нужно отформатировать текст в метке следующим образом:

username: некоторый текст от этого пользователя. Это будет
создать дополнительные строки текста, которые будут идти
и так далее.

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

Ответы [ 4 ]

2 голосов
/ 27 апреля 2010

В этом относительно простом случае вы можете подделать его. Иметь одну метку с жирным именем пользователя и другую метку с простым текстом в той же позиции. Вставьте достаточно места перед обычным текстом, чтобы оставить место для имени пользователя. Вы можете использовать методы UIStringDrawing для измерения жирного текста и пробелов.

CGSize usernameSize = [theUsername sizeWithFont:theBoldUsernameFont];
CGSize spaceSize = [@" " sizeWithFont:thePlainCommentFont];
NSString *indentedComment = [NSString stringWithFormat:@"%*s%@" , (int)ceil( usernameSize.width / spaceSize.width ) , "" , theComment];
1 голос
/ 26 апреля 2010

Если вы используете простой UILabel, он недоступен. Используйте две метки для этой задачи.

0 голосов
/ 27 апреля 2010

Вы все еще можете использовать UITableViewCell, но ячейка должна использовать подпредставление UIWebView. Настройте пользовательский подкласс ячеек с помощью метода умного установщика, который позволяет отправлять nsstrings в метод, который превращает их в довольно форматированное представление.

0 голосов
/ 27 апреля 2010

Вам нужно использовать либо UIWebView, либо CoreText, чтобы сделать этот вид расширенного текстового макета. Веб-представление имеет много накладных расходов, но является наиболее гибким, и вы не можете эффективно использовать его в ячейке UITableView. CoreText низкого уровня и не так хорошо задокументирован. Вы можете отказаться от представления таблицы и просто разложить таблицу с помощью CSS и HTML в веб-представлении, как я это делаю.

...