title: Adding text to a CGContext with Swift
body: <p>I am using Swift 3 / Xcode 8 on macOS.</p>
  
  <p>I override <code>draw</code> in an NSView and, using the current context, I am able to draw simple shapes (see code):</p>
  
  <p>class sample: NSImageView {</p>
  
  <pre><code>override func draw(_ dirtyRect: NSRect) {
      super.draw(dirtyRect)
      let context = NSGraphicsContext.current()?.cgContext;
      let length = CGPoint(x: 100, y: 100)
      let p1 = CGPoint(x: 200, y: 200)
      let shape = "square"
  
  
      context!.beginPath()
      context!.move(to: p1)
  
      if shape == "line" {
          let pointEnd = CGPoint(x: p1.x + length.x, y: p1.y + length.y)
          context!.addLine(to: pointEnd)
      } else if shape == "square" {
          let p2 = CGPoint(x: p1.x + length.x, y: p1.y)
          let p3 = CGPoint(x: p1.x + length.x, y: p1.y + length.y)
          let p4 = CGPoint(x: p1.x, y: p1.y + length.y)
          context!.addLine(to: p2)
          context!.addLine(to: p3)
          context!.addLine(to: p4)
          context!.addLine(to: p1)
      }
  
      context!.setStrokeColor(red: 1, green: 1, blue: 1, alpha: 1.0)
      context!.setFillColor(red: 0, green: 1, blue: 0, alpha: 1)
      context!.setLineWidth(2.0)
      context!.strokePath()
  
      let textColor = NSColor(calibratedRed: 1, green: 1, blue: 1, alpha: 1.0)
      let textColorB = NSColor(calibratedRed: 1, green: 1, blue: 1, alpha: 0.0)
      let rect = CGRect(x: 200, y: 200, width: 30, height: 130)
      let paragraphStyle = NSMutableParagraphStyle()
      paragraphStyle.alignment = .center
      let attr = [NSParagraphStyleAttributeName: paragraphStyle, NSForegroundColorAttributeName: textColor, NSBackgroundColorAttributeName: textColorB, NSFontAttributeName:NSFont.init(name: "HelveticaNeue-Thin", size: 14)]
  
      let q: NSString = "hello, world"
      let center = CGPoint(x: 0, y: 0)
      q.draw(at: center, withAttributes: attr)                                                                 
  }
  </code></pre>
  
  <p><strong>The above is corrected to show the entire method.</strong></p>
  
  <p><strong>This works as expected except for the text draw. Two draws I tried are shown in the last 2 lines. The first is as suggested below and it crashes (see message in comment for that line). The second is close but it demands an NSDrawingContext, not a CGContext.</strong></p>
  
  <p>I would also like to draw some text (say right beneath the line). I have done a LOT of searching and have found nothing that works. CGContexts seems to have methods related to drawing text but none seem to actually draw it. To be clear, I found nothing that would compile, much less run.</p>
  
  <p>Note: I am new to macOS development (done some iOS though). So I could be missing something very obvious.</p>
  
  <p><strong>The problem was in the color assignment in the attributes.
  Edited with code that now works.</strong></p>