UITableViewCell Circle Bullet Point

时间:2014-07-28 21:47:12

标签: ios objective-c uitableview geometry cgrect

我一直在努力实现像iOS日历应用程序中的彩色圆形项目符号。

selection view

我想在textLabel前面放置带圆圈的单元格,如上图所示。

selected view

我还希望在detailTextLabel前面有相应的圆圈,如上图所示。

我试图用框架内的图像来做这件事,但它总是太大了。此外,日历应用程序中的圆圈似乎不在单元格的imageView中。

我也尝试用另一个问题找到的代码绘制一个圆圈。这段代码对我不起作用。这是我的XYZCircleView.m文件中的代码:

- (void)drawRect:(CGRect)rect
{
    // Drawing code
    CGContextRef context= UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
    CGContextSetAlpha(context, 0.5);
    CGContextFillEllipseInRect(context, CGRectMake(0,0,self.frame.size.width,self.frame.size.height));

    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
    //CGContextStrokeEllipseInRect(context, CGRectMake(0,0,self.frame.size.width,self.frame.size.height));
    CGContextStrokeEllipseInRect(context, CGRectMake(1, 1, self.frame.size.width - 2,    self.frame.size.height - 2));
}

cellForRow...内:

CGRect positionFrame = CGRectMake(10,10,10,10);
XYZCircleView *circleView = [[XYZCircleView alloc] initWithFrame:positionFrame];
[cell.contentView addSubview:circleView];

如何做到这一点?

由于

2 个答案:

答案 0 :(得分:5)

使用项目符号字符并使用属性字符串,以便设置项目符号的颜色。

这样的事情:

NSString *text = @"• Calendar";
NSDictionary *attributes = @{ NSFontAttributeName : [UIFont systemFontOfSize:15] };
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:text attributes:attributes];
[attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 1)]; // color the bullet
[attrStr addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(1, attrStr.length - 1)]; // color the rest

cell.text.attributedText = attrStr;

您可能需要根据需要使用不同的字体。

答案 1 :(得分:1)

尝试将方形视图作为子视图添加到单元格,并设置其图层的cornerRadius属性,使其成为圆形。