Как указывает smacl, самый простой способ сделать это - сместить свое начало координат в нижний левый угол экрана, используя (screenheight - viewheight - y) вместо y в источниках ваших видов.
Однако вы можете перевернуть систему координат слоев вашего основного вида, используя CATransform3D. Я делаю это для того, чтобы я мог совместно использовать один и тот же код макета Core Animation CALayer между моим приложением iPhone и клиентом Mac (iPhone инвертирует нормальную систему координат Quartz для CALayers, чтобы соответствовать системе UIViews). Все, что вам нужно сделать, чтобы включить это, это поместить строку
self.layer.sublayerTransform = CATransform3DMakeScale(1.0f, -1.0f, 1.0f);
в вашем коде инициализации для вашего слоя-хостинга UIView. Помните, что это перевернет ваши CALayers, поэтому любой рендеринг текста UIKit в этих слоях, возможно, также необходимо будет перевернуть, используя код, подобный следующему:
CGContextSaveGState(context);
CGContextTranslateCTM(context, 0.0f, self.frame.size.height);
CGContextScaleCTM(context, 1.0f, -1.0f);
UIFont *theFont = [UIFont fontWithName:@"Helvetica" size:fontSize];
[text drawAtPoint:CGPointZero withFont:theFont];
CGContextRestoreGState(context);
Вы можете сделать аналогичный вид инверсии, используя CGAffineTransform, но вам также потребуется применить перевод, чтобы сделать эту работу:
CGAffineTransform flipTransform = CGAffineTransformMakeTranslation(0.0f, self.frame.size.height);
flipTransform = CGAffineTransformScale(flipTransform, 1.0f, -1.0f);
Возможно, вы сможете использовать аффинное преобразование для преобразования координат вашего источника, используя CGPointApplyAffineTransform ().