2016-12-14 10 views
2

Я новичок в быстром, я хочу нарисовать линию между двумя точками над изображением, которое я назвал mapView, я пытался использовать CGContext, но не получил никакого результата, никакой идеи помочь? Благодарю.Как нарисовать линию между двумя точками над изображением в быстром 3?

UIGraphicsBeginImageContext(mapView.bounds.size) 
    let context : CGContext = UIGraphicsGetCurrentContext()! 
    context.addLines(between: [CGPoint(x:oldX,y:oldY), CGPoint(x:newX, y:newY)]) 
    context.setStrokeColorSpace(CGColorSpaceCreateDeviceRGB()) 
    context.setStrokeColor(UIColor.blue.cgColor.components!) 
    context.setLineWidth(3) 
    mapView?.image?.draw(at: CGPoint(x:0, y:0)) 
    context.strokePath() 
    mapView.image = UIGraphicsGetImageFromCurrentImageContext()! 
    UIGraphicsEndImageContext() 
+0

Вы могли бы искать полилинию –

+0

Как @Dev_Tandel сказал, вы с помощью карт Google и хотите, чтобы нарисовать ломаную линию или просто вы хотите, чтобы нарисовать линию между двумя точками любой UIImage. –

ответ

3

Один из вариантов, чтобы добавить вид к югу на ваш взгляд изображения и добавить код рисования линии в его метод draw(_ rect: CGRect).

Реализация образца площадка:

class LineView : UIView { 
    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.backgroundColor = UIColor.init(white: 0.0, alpha: 0.0) 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    override func draw(_ rect: CGRect) { 
     if let context = UIGraphicsGetCurrentContext() { 
      context.setStrokeColor(UIColor.blue.cgColor) 
      context.setLineWidth(3) 
      context.beginPath() 
      context.move(to: CGPoint(x: 5.0, y: 5.0)) // This would be oldX, oldY 
      context.addLine(to: CGPoint(x: 50.0, y: 50.0)) // This would be newX, newY 
      context.strokePath() 
     } 
    } 
} 


let imageView = UIImageView(image: #imageLiteral(resourceName: "image.png")) // This would be your mapView, here I am just using a random image 
let lineView = LineView(frame: imageView.frame) 
imageView.addSubview(lineView) 
+0

Спасибо за помощь, все сделано. У меня есть другой вопрос: как я могу удалить эти строки из изображения? попробовал removeFromSuperView, но у меня есть другой вид на изображение, так как я не хочу его удалять, спасибо –

+0

за то, что вы можете использовать 'lineView.removeFromSuperview()', другая опция - управлять функцией draw в LineView, чтобы отображать только то, что вы хотите. –

+0

Большое спасибо, я попытался сделать его динамическим путем отправки баллов, но я не могу, пожалуйста, как сделать его динамичным? –