Как перевернуть координаты при рисовании в контексте?

Я создаю контекст из UIImage, а затем рисую в нем

CGContextDrawImage(bitmapContext,
                   CGRectMake(0, 0,
                              originalImage.size.width,
                              originalImage.size.height),
                   oImageRef); 

изображение появляется вверх ногами из-за перевернутой системы координат в кварце. Как я могу это исправить?

Ответы на вопрос(2)

Решение Вопроса

используя что-то похожее на следующее:

CGContextSaveGState(bitmapContext);
CGContextTranslateCTM(bitmapContext, 0.0f, originalImage.size.height);
CGContextScaleCTM(bitmapContext, 1.0f, -1.0f);

// Draw here
CGContextDrawImage(bitmapContext, CGRectMake(0, 0, originalImage.size.width, originalImage.size.height), oImageRef);

CGContextRestoreGState(bitmapContext);

Перевод может не быть необходим для рисования изображения, но я нуждался в этом, когда я хотел нарисовать перевернутый текст. Если это единственное, что вы будете делать в контексте, вы также можете избавиться от вызовов для сохранения и восстановления состояния контекста.

 Thanks18 июл. 2009 г., 10:46
Мне нужны были только CGContextTranslateCTM и CGContextScaleCTM. Просто вызвал это сразу после UIGraphicsBeginImageContext. Отличная вещь!

решение как расширение в Swift 3:

extension CGContext {
    func drawFlipped(image: CGImage, rect: CGRect) {
        saveGState()
        translateBy(x: 0, y: rect.height)
        scaleBy(x: 1, y: -1)
        draw(image, in: rect)
        restoreGState()
    }
}

Ваш ответ на вопрос