iOS - добавить значок в UITableViewCell - PullRequest
12 голосов
/ 08 апреля 2009

Как добавить значок к UITableViewCell, например:

альтернативный текст http://img17.imageshack.us/img17/9974/img0001ac9.png

Стоит ли просто добавить подпредставление с текстом и надписью на нем?

Ответы [ 5 ]

5 голосов
/ 03 июня 2015

Вот быстрое улучшение ответа @ POF. Нам не нужно столько подпредставлений, и мы можем использовать математику для поддержки N цифр, а не только 1-3:

func setDiscountBadge(count: Int) {
  let size: CGFloat = 26
  let digits = CGFloat( count("\(number)") ) // digits in the label
  let width = max(size, 0.7 * size * digits) // perfect circle is smallest allowed
  let badge = UILabel(frame: CGRectMake(0, 0, width, size))
  badge.text = "\(number)"
  badge.layer.cornerRadius = size / 2
  badge.layer.masksToBounds = true
  badge.textAlignment = .Center
  badge.textColor = UIColor.whiteColor()
  badge.backgroundColor = cfg.UIColors.brand
  YOURCELL.accessoryView = badge // !! change this line
}

И результат (я использую фирменный цвет, но ваш может быть любого цвета):

uilabel badge

2 голосов
/ 06 июня 2014

TDBadgedCell - довольно хороший выбор. Настраиваемый для ваших нужд.

2 голосов
/ 12 января 2014

Что касается меня , то самый простой способ - использовать cell.accessoryView. Пожалуйста, посмотрите в мой код, как я это сделал:

UIImageView * commentsViewBG = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"counter1.png"]];
commentsViewBG.frame = CGRectMake(
    commentsViewBG.frame.origin.x,
    commentsViewBG.frame.origin.y, 30, 20);


UILabel *commentsCount;
if (commentsArray.totalCount < 10)
    commentsCount = [[UILabel alloc]initWithFrame:CGRectMake(10, -10, 40, 40)];
else if (commentsArray.totalCount < 100)
    commentsCount = [[UILabel alloc]initWithFrame:CGRectMake(5, -10, 40, 40)];
else if (commentsArray.totalCount < 1000)
{
    commentsViewBG.frame = CGRectMake(
        commentsViewBG.frame.origin.x,
        commentsViewBG.frame.origin.y, 40, 20);
    commentsCount = [[UILabel alloc]initWithFrame:CGRectMake(5, -10, 40, 40)];
}
commentsCount.text = [NSString stringWithFormat:@"%ld",(long)commentsArray.totalCount];
commentsCount.textColor = [UIColor whiteColor];
commentsCount.backgroundColor = [UIColor clearColor];
[commentsViewBG addSubview:commentsCount];
cell.accessoryView = commentsViewBG;

И мой результат:

enter image description here

Надеюсь, это поможет.

1 голос
/ 11 мая 2011

Я хотел бы добавить еще одну альтернативу для создания пользовательских значков. CustomBadge немного более мощный. Это открыто и бесплатно.

1 голос
/ 24 июня 2009

Да, в настоящее время не поддерживается способ добавления значка в ячейку UITableView. В этом примере это, скорее всего, пользовательское подпредставление, которое содержит изображение и UILabel.

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