相关疑难解决方法(0)

使用Core Graphics制作饼图

到目前为止,我已经填补了一个圆圈,就是这样.我正在尝试制作一个饼图,代表满意和不满意客户的数量并展示它.我对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)

编辑

此外,现在我开始看到我可能需要用一个基于不满意客户总数的弧来覆盖我的圈子.如何根据人数增加或减少覆盖弧的大小?

任何帮助将非常感谢!

core-graphics ios swift

24
推荐指数
1
解决办法
8606
查看次数

你如何在iOS中实现"时钟擦除"/径向擦除效果?

有时您会看到正在使用的"时钟擦除"动画.像这样的东西:

在此输入图像描述

你会如何在iOS中实现这种效果?

(注意:这个问题是一个"振铃器".我想分享一种创建时钟擦除动画的技术,但是SO没有共享教程的格式,所以我最接近的是问一个问题,然后提供答案这是故意的,并试图分享其他人可能觉得有用的信息.)

animation core-animation ios

7
推荐指数
1
解决办法
1862
查看次数

UIBezierPath + CAShapeLayer - 填充圆圈的动画

我试图动画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)

animation cabasicanimation caanimation ios swift

3
推荐指数
2
解决办法
5814
查看次数