2016-05-18 2 views
1

Любая идея, как сделать пончики диаграммы с названиями, как это:рисовать пончик диаграмму с названиями в Swift

enter image description here

Я попробовал несколько библиотек, но без успеха. Я не могу создать эти белые линии между каждым фрагментом. Подчеркнутые заголовки слишком сложны для меня. Любая помощь будет оценена! Заранее спасибо!

ответ

4

Вы можете использовать CABasicAnimation рисовать дуги, например

[ни один проверенный код]

// e.g. 0.3 is 30% 
func calculateEndAngle(percentageAsDouble: Double) -> CGFloat { 
    let endAngle:CGFloat = CGFloat(2 * M_PI - (M_PI * percentageAsDouble)) 
    return endAngle 
} 

let animationCenter:CGPoint = self.view.center 
let animationRadius:CGFloat = 100.0 
let animationLineWidth:CGFloat = 16.0 
let endAngle = calculateEndAngle(0.3) 
let arcPath = UIBezierPath(arcCenter: animationCenter, radius: animationRadius, startAngle: CGFloat(M_PI), endAngle:endAngle, clockwise: true) 

let arcLayer = CAShapeLayer() 
arcLayer.path = arcPath.CGPath 
arcLayer.fillColor = UIColor.clearColor().CGColor 
arcLayer.strokeColor = UIColor.greenColor().CGColor 
arcLayer.lineWidth = animationLineWidth 

self.view.layer.addSublayer(arcLayer) 
+0

Спасибо! Это хорошо, но как рассчитать углы в зависимости от некоторых данных? Как, имея три значения - 30%, 50% и 20%? Как нарисовать эти три среза с белыми линиями между ними? – scourGINHO

+0

, поэтому полный круг равен 2 * M_PI, поэтому вам нужно сохранить список начальных и конечных значений каждой из правильной длины дуги (0.3 * 2 * M_PI - 30%, но вам нужно будет смещать углы в зависимости от того, где 30 % начинается). – Damo

+0

Не могли бы вы опубликовать фрагмент кода, показывающий это? Использование фиктивных данных - 50%, 30%, 20%. Независимо от того, где он начинается. – scourGINHO

Смежные вопросы