UIGraphicsGetCurrentContext()
дает вам контекст, в который вы можете сделать несколько вещей. Вызов line
- это неправильная идея, поскольку она может содержать несколько строк или кругов, или всевозможные другие вещи.
Подумайте о контексте, как художник, сидя перед пустой холст. Вы даете инструкции художника, например, «нарисуйте красную линию, затем нарисуйте синий круг». Художник следует инструкциям, а потом вы смотрите на холст.
Вот как вы можете нарисовать линию, а затем круг.
let context = UIGraphicsGetCurrentContext()
// Tell the context what stroked paths should look like
CGContextSetLineWidth(context, 3.0)
CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor)
// Draw a single line
CGContextMoveToPoint(context, 0, self.bounds.midY)
CGContextAddLineToPoint(context, self.bounds.width, self.bounds.midY)
CGContextStrokePath(context)
// Now draw a circle by filling a path.
// First, set the fill color:
CGContextSetFillColorWithColor(context, UIColor.blueColor().CGColor)
// Specify how big the circle is, and where its center is:
let circleRadius = CGFloat(5.0)
let circleCenter = CGPoint(x: self.bounds.midX, y: self.bounds.midY)
// Then add a circle to the context, by specifying the rectangle that surrounds it:
let circleRect = CGRect(x: circleCenter.x - circleRadius,
y: circleCenter.y - circleRadius,
width: circleRadius * 2,
height: circleRadius * 2)
CGContextAddEllipseInRect(context, circleRect)
// And fill that circle:
CGContextFillPath(context)
Если вы хотите, чтобы привлечь больше кругов, но в разных местах, просто позвоните CGContextAddEllipseInRect
и CGContextFillPath
снова, но с разными значениями для circleRect
. В зависимости от того, что вы хотите, может потребоваться цикл for. Это полностью зависит от вас.
Если вы не хотите писать это самостоятельно, есть много доступных библиотек диаграмм сторонних разработчиков, просто выполните поиск. Apple не предоставляет «официальный».