Есть ли способ преобразовать CGRect
с координатами системы UIView
в координаты Core Graphics, где начало координат находится в нижнем левом углу?Преобразование CGRect в Core Графические координаты
ответ
Несомненно. Вам просто нужно вычесть y-origin и высоту прямоугольника в сторону от высоты представления.
rect.origin.y = view.frame.size.height-(rect.origin.y+rect.size.height)
Вы можете представить это с CGAffineTransform
как так:
CGAffineTransformMakeTranslation(0, view.size.height-((rect.origin.y*2.0)+rect.size.height))
Вы вычитать происхождение дважды, как вы в настоящее время работает с относительным значением, а не абсолютный.
Однако, если вы хотите, чтобы перевернуть контекст для работы в UIView
координаты вы хотите:
CGFloat ctxHeight = CGContextGetClipBoundingBox(c).size.height;
CGContextScaleCTM(c, 1, -1);
CGContextTranslateCTM(c, 0, -ctxHeight);
Знаете ли вы метод с использованием CGAffineTransform? – user2783443
Я обновил свой ответ, чтобы включить это – Hamish
http://stackoverflow.com/questions/506622/cgcontextdrawimage-draws-image -upside-down-when-pass-uiimage-cgimage/511199? s = 1 | 0.0000 # 511199 использует стандартную методику перемещения на высоту представления и перевертывания y-шкалы. CGContextScaleCTM (ctx, 1.0, -1.0); CGContextTranslateCTM (ctx, 0, -imageRect.size.height); –