2015-05-07 6 views
0

Я пытаюсь сделать что-то вроде прикрепленного изображения. I am the one who knocks.Вращающийся NSString в Swift

Я думал, что эта страница приведет к ответу

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

или

Rotating a NSString in drawRect

Drawing rotated text with NSString drawInRect

но преобразование objC в быстрый затруднительно. Я могу легко нарисовать свои стрелки, но при этом 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) 

ответ

2

Подумайте о том, что вы хотите сделать: нарисовать строку, на некотором расстоянии от центр круга, повернутый вокруг центра круга. Таким образом, было бы удобно думать о центре круга как о происхождении. Я бы сделал следующее:

  1. Перевести CTM так, чтобы происхождение находилось в центре круга.
  2. Поверните на правильный угол.
  3. Нарисовать строку в {d, 0} (где d является расстояние от центра, где должен начинаться текст.
+0

Благодаря. Мои радиальные линии не отображаются в настоящее время. Я использовал отдельный контекст, сделал 'CGContextSaveGState (contextLines) 'и, наконец,' CGContextRestoreGState (contextLines) ', но не радость. –

+1

Я бы нарисовал линии одновременно с текстом. Просто помните, что вы уже повернули CTM, поэтому вы нарисуете линию вдоль' x 'axis, то есть от начала' {0,0} 'до точки' {d, 0} '. – Caleb

+0

Спасибо, почти там. Я считаю, что по какой-то причине цвета атрибутов не соблюдаются.' s. drawAtPoint (CGPoint (x: радиус, y: 0), withAttribu tes: [NSForegroundColorAttributeName: UIColor.yellowColor()]) 'строки должны быть желтыми, но они черные? –