Использование нескольких CGAffineTransforms в текстовой матрице - PullRequest
4 голосов
/ 18 мая 2011

Я отображаю текст, используя Кварц.Вот мой код:

    CGContextRef myContext = UIGraphicsGetCurrentContext();
    CGContextSelectFont(myContext, "Helvetica", 12, kCGEncodingMacRoman);
    CGContextSetCharacterSpacing(myContext, 8);
    CGContextSetTextDrawingMode(myContext, kCGTextFillStroke);
    CGContextSetRGBFillColor(myContext, 0, 0, 0, 1);
    CGContextSetRGBStrokeColor(myContext, 0, 0, 0, 1);
    CGContextSetTextMatrix(myContext,CGAffineTransformMake(1, 0, 0, -1, 0, 0));
    CGContextShowTextAtPoint(myContext, textOrigin.x, textOrigin.y,[way.name UTF8String],[way.name length]);

Это показывает мой текст в правильном направлении вверх и в правильном направлении, однако мне также нужно добавить поворот к тексту, используя CGAffineTransformMakeRotation(angle);.Кажется, я не могу понять, как применить два аффинных преобразования к текстовой матрице, не перезаписывая одно другим.Любая помощь будет великолепна.

Ответы [ 2 ]

12 голосов
/ 18 мая 2011

Вы можете комбинировать матрицы с CGAffineTransformConcat , например

CGAffineTransform finalTransf = CGAffineTransformConcat(t1, t2);

Если вам просто нужно применить вращение к существующей матрице, используйте CGAffineTransformRotate , например

CGAffineTransform t = CGAffineTransformMake(1, 0, 0, -1, 0, 0);
CGAffineTransform t = CGAffineTransformRotate(t, M_PI/2);
CGContextSetTextMatrix(myContext, t);
1 голос
/ 19 июня 2015

Чтобы дополнить ответ @ kennytm, чтобы применить более двух преобразований, вы можете сделать следующее:

var t = CGAffineTransformIdentity
t = CGAffineTransformTranslate(t, CGFloat(100), CGFloat(300))
t = CGAffineTransformRotate(t, CGFloat(M_PI_4))
t = CGAffineTransformScale(t, CGFloat(-1), CGFloat(2))
// ... add as many as you want, then apply it to to the view
imageView.transform = t

Иди сюда, чтобы увидеть мой полный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...