Как нарисовать строку в других ориентациях устройства с помощью CGContext iOS - PullRequest
2 голосов
/ 02 июля 2011

Я пытаюсь нарисовать текст на iPhone, но в альбомном режиме, где кнопка «Домой» находится слева.Так что мне нужно как-то скрутить цифры (наверное, я использую преобразование)?

Вот что у меня сейчас:

    CGContextSetRGBFillColor(context, 1.0, 0, 0, 1.0);
    CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
    CGContextSelectFont(context, "Helvetica", 20, kCGEncodingMacRoman);
    CGContextSetTextMatrix(context, CGAffineTransformMakeRotation(M_PI/2));
    CGContextSetTextDrawingMode(context, kCGTextFill);
    NSString *t = [NSString stringWithFormat:@"%i",seconds];
    const char *str=[t UTF8String];
    CGContextShowTextAtPoint(context,6.0,15.0,str,strlen(str));

Что мне нужно добавить, чтобы повернуть текстчтобы его можно было прочитать, когда телефон находится в горизонтальном положении, с кнопкой «Домой» слева.

1 Ответ

0 голосов
/ 02 июля 2011

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

CGContextSetRGBFillColor(context, 1.0, 0, 0, 1.0);
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextSelectFont(context, "Helvetica", 20, kCGEncodingMacRoman);
CGAffineTransform xform = CGAffineTransformMake(
                                                1.0,  0.0,
                                                0.0, -1.0,
                                                0.0,  0.0);
CGContextSetTextMatrix(context, xform);
CGContextConcatCTM(context, CGAffineTransformMakeRotation(M_PI_2));
CGContextSetTextDrawingMode(context, kCGTextFill);
NSString *t = [NSString stringWithFormat:@"%i",seconds];
const char *str=[t UTF8String];
CGContextShowTextAtPoint(context,6.0,15.0,str,strlen(str));
...