iOS - 向UITableViewCell添加徽章

时间:2009-04-08 18:15:27

标签: ios objective-c uitableview

如何将徽章添加到UITableViewCell,如下所示:

alt text http://img17.imageshack.us/img17/9974/img0001ac9.png

我应该简单地添加一个带有文字和标签的子视图吗?

5 个答案:

答案 0 :(得分:5)

这是对@ 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

答案 1 :(得分:2)

至于我最简单的方式是使用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

希望它有所帮助。

答案 2 :(得分:2)

TDBadgedCell是一个不错的选择。高度可定制,满足您的需求。

答案 3 :(得分:1)

是的,目前还没有支持的方法可以将徽章添加到UITableView Cell。在此示例中,它很可能是包含图像和UILabel的自定义子视图。

答案 4 :(得分:1)

我想添加另一种方法来创建自定义徽章。 CustomBadge有点强大。它是开放的,免费的。