创建一个圆形TableViewCell指标,如Apple Mail应用程序

时间:2015-06-02 18:56:25

标签: ios swift

我正在尝试为我的TableViewCell创建一个循环指示器,类似于Apple Mail应用程序中的电子邮件被标记为未读时。

enter sdsdsdsd description

我有以下代码:

var Indicator = CAShapeLayer()
var IndicatorSize: CGFloat = 10

// standard blue color
let blueColor = UIColor(red: 0, green: 122.0/255.0, blue:1.0, alpha:1)

// create circular CAShapeLayer
Indicator.bounds = CGRect(x:0, y:0, width:IndicatorSize, height:IndicatorSize)
Indicator.position = CGPoint(x: 10, y: 10)
Indicator.cornerRadius = Indicator.frame.size.width/2

// add as cell sublayer
cell.layer.addSublayer(Indicator)

虽然这似乎可以完成这项工作,但这个圈子并不像邮件应用程序那样平滑,角落几乎看起来像素化。我不确定这是因为我使用的是CAShapeLayer。我想知道是否有更好的选择。

我也可以将它作为单元格的对象,而不仅仅是一个图层,以便我可以使用cell.Indicator调用它吗?

2 个答案:

答案 0 :(得分:4)

拿一个UIView。对drawRect:方法进行子类化并在其中绘制UIBezierPath

类似的东西:

@implementation BlueCircleView

- (void)drawRect:(CGRect)rect
{
    [[UIColor blueColor] setFill];
    // Assuming your view as the size of the dot you want.
    // Otherwise, simply pass another rect.
    UIBezierPath *round = [UIBezierPath bezierPathWithOvalInRect:self.bounds];
    [round fill];
}

@end

答案 1 :(得分:3)

class CircleView: UIView {
    override func drawRect(rect: CGRect) {
        let context = UIGraphicsGetCurrentContext()
        self.tintColor.setFill()
        CGContextFillEllipseInRect(context, rect)
    }
}