Wie smacl weist darauf hin, ist der einfachste Weg, dies zu tun ist, Verschieben Sie Ihren Ursprung nach links unten auf dem Bildschirm, indem Sie (Bildschirmhöhe - Ansichtshöhe - y) anstelle von y in den Ursprüngen Ihrer Ansichten verwenden.
Sie können jedoch das Koordinatensystem der Layer Ihrer Hauptansicht mit einem CATransform3D spiegeln. Ich tue das, damit ich den gleichen Core Animation CALayer Layout-Code zwischen meiner iPhone-Anwendung und einem Mac-Client teilen kann (das iPhone invertiert das normale Quartz-Koordinatensystem für CALayers, damit es mit dem der UIViews übereinstimmt). Alles, was Sie tun müssen, um dies zu ermöglichen ist die Linie für Ihr Schicht-Hosting UIView
self.layer.sublayerTransform = CATransform3DMakeScale(1.0f, -1.0f, 1.0f);
in Ihrem Initialisierungscode zu platzieren. Denken Sie daran, dass dies Ihr CALayers Flip wird, so dass jeder UIKit Textdarstellung in diesen Schichten auch ähnlich wie im folgenden unter Verwendung von Code gekippt müssen werden:
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);
Sie können eine ähnliche Art von Inversion tun, um eine CGAffineTransform, aber Sie wird auch eine Übersetzung anwenden müssen, um diese Arbeit zu machen:
CGAffineTransform flipTransform = CGAffineTransformMakeTranslation(0.0f, self.frame.size.height);
flipTransform = CGAffineTransformScale(flipTransform, 1.0f, -1.0f);
Sie können hier die affine Transformation verwenden, um Ihren Ursprung von Koordinaten mit Hilfe CGPointApplyAffineTransform() zu konvertieren.