2016-02-10 2 views
-1

Есть ли способ преобразовать CGRect с координатами системы UIView в координаты Core Graphics, где начало координат находится в нижнем левом углу?Преобразование CGRect в Core Графические координаты

+0

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); –

ответ

1

Несомненно. Вам просто нужно вычесть 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); 
+0

Знаете ли вы метод с использованием CGAffineTransform? – user2783443

+0

Я обновил свой ответ, чтобы включить это – Hamish