【问题标题】:Rotating NSString in Swift在 Swift 中旋转 NSString
【发布时间】:2015-07-17 08:36:03
【问题描述】:

我正在尝试做一些类似于附加图像的事情。

我认为这个页面会导致答案

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)

【问题讨论】:

    标签: swift nsstring calayer quartz-graphics


    【解决方案1】:

    想想你想做什么:在离圆心一定距离的地方画一根绳子,绕着圆心旋转。因此,将圆心视为原点会很方便。我会做以下事情:

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

    【讨论】:

    • 谢谢。我的径向线现在没有显示。我使用了一个单独的上下文,做了CGContextSaveGState(contextLines),最后做了CGContextRestoreGState(contextLines),但没有任何乐趣。
    • 我会在文本的同时画线。请记住,您已经旋转了 CTM,因此您将沿着 x 轴绘制直线,即从原点 {0,0} 到点 {d,0}
    • 谢谢,差不多了。我发现由于某种原因,属性颜色没有得到尊重。 ` s.drawAtPoint(CGPoint(x: radius , y: 0 ), withAttributes: [NSForegroundColorAttributeName: UIColor.yellowColor() ])` 线条应该是黄色但它们是黑色的??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 2015-05-12
    • 2023-03-18
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多