到目前为止,我已经填补了一个圆圈,就是这样.我正在尝试制作一个饼图,代表满意和不满意客户的数量并展示它.我对CG非常陌生,并且想知道有人可以提出足够的代码给我一个想法或指导我.
我应该在底部圆圈表示满意客户的数量,然后在其上添加另一个圆圈以显示不满意的客户吗?我是以正确的方式接近它吗?
到目前为止,这是我的代码.
override func drawRect(rect: CGRect) {
// Get current context
let context = UIGraphicsGetCurrentContext()
// Set color
CGContextSetStrokeColorWithColor(context,UIColor(red: 0.2, green: 0.4, blue: 1, alpha: 1.0).CGColor)
let rectangle = CGRectMake((frame.size.width / 3) - 50, frame.size.height / 2 + 40,220,220)
CGContextAddEllipseInRect(context,rectangle)
CGContextSetFillColorWithColor(context, UIColor(red: 0.2, green: 0.4, blue: 1, alpha: 1.0).CGColor)
CGContextFillPath(context)
CGContextStrokePath(context)
}
Run Code Online (Sandbox Code Playgroud)
编辑
此外,现在我开始看到我可能需要用一个基于不满意客户总数的弧来覆盖我的圈子.如何根据人数增加或减少覆盖弧的大小?
任何帮助将非常感谢!
有时您会看到正在使用的"时钟擦除"动画.像这样的东西:

你会如何在iOS中实现这种效果?
(注意:这个问题是一个"振铃器".我想分享一种创建时钟擦除动画的技术,但是SO没有共享教程的格式,所以我最接近的是问一个问题,然后提供答案这是故意的,并试图分享其他人可能觉得有用的信息.)
我试图动画CAShapeLayer的路径,以便我得到一个圆圈"填充"达到特定数量的效果.
问题
它"作品",而不是AS,因为我认为这可能是的,我想介绍一些宽松政策之平滑.但是因为我是单独制作每个%的动画,所以我不确定现在是否可能.所以我正在寻找可以解决这个问题的替代方案!
视觉解释
首先 - 这里是我想要实现的动画的一些"帧"(参见图片 - 圈子填充从0%到25%)
码
我创建绿色笔划(外部):
let ovalPath = UIBezierPath(ovalInRect: CGRectMake(20, 20, 240, 240))
let circleStrokeLayer = CAShapeLayer()
circleStrokeLayer.path = ovalPath.CGPath
circleStrokeLayer.lineWidth = 20
circleStrokeLayer.fillColor = UIColor.clearColor().CGColor
circleStrokeLayer.strokeColor = colorGreen.CGColor
containerView.layer.addSublayer(circleStrokeLayer)
Run Code Online (Sandbox Code Playgroud)
我创建填充形状的初始路径(内部):
let filledPathStart = UIBezierPath(arcCenter: CGPoint(x: 140, y: 140), radius: 120, startAngle: startAngle, endAngle: Math().percentToRadians(0), clockwise: true)
filledPathStart.addLineToPoint(CGPoint(x: 140, y: 140))
filledLayer = CAShapeLayer()
filledLayer.path = filledPathStart.CGPath
filledLayer.fillColor = colorGreen.CGColor
containerView.layer.addSublayer(filledLayer)
Run Code Online (Sandbox Code Playgroud)
然后我使用for循环和CABasicAnimations数组进行动画处理.
var animations: [CABasicAnimation] = [CABasicAnimation]()
func animate() {
for val …Run Code Online (Sandbox Code Playgroud)