Пользовательский UITableViewCell с частично полужирным текстом - PullRequest
3 голосов
/ 11 марта 2010

Попытка реализовать UITableView имен, аналогичных встроенному приложению Contacts iPhone, где имя написано обычным шрифтом, а фамилия выделена жирным шрифтом. Быстрый Google предполагает, что это не так просто, как кажется, из-за отсутствия в SDK iPhone поддержки расширенного текста в UILabels.

Одно из найденных решений рекомендовало использовать UIWebView для форматирования текста, позволяя тегам HTML жирным шрифтом обеспечивать требуемую разметку. Поправьте меня, если я ошибаюсь, но это кажется излишним и повлияет на производительность приложения.

Другое решение, которое я пытаюсь исследовать подробнее, - это создать пользовательский UITableViewCell, содержащий две UILabels рядом со второй меткой, отформатированной для жирного текста. Это кажется простым, но я не уверен, как сделать так, чтобы метки автоматически изменяли размер по размеру текста (до определенной максимальной ширины). Это возможно через Интерфейсный Разработчик, или это должно быть сделано программно?

Нахожусь ли я на правильном пути или есть гораздо более простой способ добиться этого, казалось бы, тривиального эффекта?

Ответы [ 3 ]

1 голос
/ 11 марта 2010

Интересно, стоит ли создавать подкласс UILabel и рисовать самостоятельно. Тогда вы можете использовать CGContextSelectFont, CGContextGetTextPosition, CGContextSetTextPosition, CGContextShowText и т. Д., Чтобы нарисовать ваш текст.

Выберите обычный шрифт, установите начальную текстовую позицию, нарисуйте текст, переместите текстовую позицию на несколько пикселей, выберите жирный шрифт, нарисуйте жирный текст и т. Д.

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

0 голосов
/ 29 августа 2013
enter code here  NSDictionary  *firstNameAttributes = @{ NSFontAttributeName : [UIFont fontWithName:@"Arial" size:20.0],
                                            NSStrokeColorAttributeName : [UIColor blackColor]};
    NSDictionary  *lastNameAttributes = @{NSFontAttributeName : [UIFont fontWithName:@"Arial-Bold" size:20.0],
                                          NSStrokeColorAttributeName : [UIColor blackColor]};
    NSString* first = @"udhaya";
    NSString* last = @" chandrika";


    NSString *append=[NSString stringWithFormat:@"%@%@",first,last];

    cell.textLabel.text = [NSString stringWithFormat:@"%@",append];

    NSMutableAttributedString * name =
    [[NSMutableAttributedString alloc] initWithString:first attributes:firstNameAttributes];
    NSMutableAttributedString * lastName =
    [[NSMutableAttributedString alloc] initWithString:last attributes:lastNameAttributes];

    [name appendAttributedString:lastName];

    [[cell textLabel] setAttributedText:name];
0 голосов
/ 11 марта 2010

Похоже, об этом просили несколько раз при переполнении стека под различными формами. Распространенным решением является библиотека TTStyledTextLabel библиотеки Three20. Пока iPhone SDK не содержит встроенную текстовую метку и не катит мою собственную, этот класс выглядит следующим лучшим.

Редактировать: только что наткнулся на это решение, и оно выглядит еще лучше: https://github.com/chrisdevereux/Slash

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...