在 Swift 中旋转 NSString

Rotating NSString in Swift

我正在尝试执行与所附图片类似的操作。

我认为此页面会引出答案

http://www.informit.com/articles/article.aspx?p=2149190&seqNum=13

Rotating a NSString in drawRect

Drawing rotated text with NSString drawInRect

但是objC转swift比较麻烦。我可以很容易地画出我的箭头,但是让 NSString 旋转然后平移是有问题的。它会做一些奇怪的事情,比如画出屏幕、错误的角度等。

我试过这个和 许多 变体

  CGContextSaveGState(context)
  CGContextRotateCTM(context, dTheta[i])
  CGContextTranslateCTM(context, -s.sizeWithAttributes(attributes).width / 2.0, -radiusY )
  s.drawAtPoint(CGPoint(x: x + xOffset*0.0 , y: y + yOffset*0.0 ), withAttributes: attributes)
  //s.drawAtPoint(CGPointMake(0, 0), withAttributes: attributes)
  CGContextRestoreGState(context)

想一想你想做什么:画一条离圆心一定距离的绳子,绕着圆心旋转。因此,将圆心视为原点会很方便。我会执行以下操作:

  1. 平移 CTM,使原点位于圆心。
  2. 旋转到正确的角度。
  3. {d, 0} 处绘制字符串(其中 d 是距文本开始中心的距离。