Ответ заключается в том, что CoreGraphics использует систему координат, которая берет свое начало в нижнем левом углу, что является соглашением PostScript.Однако в iOS начало координат в верхнем левом углу.
Чтобы использовать CoreGraphics, необходимо перевернуть систему координат и переместить начало координат к верхнему краю рамки.Метод drawRect должен выглядеть следующим образом.
- (void)drawRect:(CGRect)rect {
// Drawing code.
CGContextRef myContext = UIGraphicsGetCurrentContext();
CGRect contextRect = self.bounds;
// flip transform used to transform the coordinate system from origin
// top left corner to bottom right corner and inverting the y-axis
CGAffineTransform flipTransform = CGAffineTransformConcat(CGAffineTransformMakeTranslation(0.f, contextRect.size.height),
CGAffineTransformMakeScale(1.f, -1.f));
CGContextConcatCTM(myContext, flipTransform);
UIGraphicsPushContext(myContext);
CGContextSelectFont (myContext, // 3
"Courier",
24,
kCGEncodingMacRoman);
CGContextSetCharacterSpacing (myContext, 1); // 4
CGContextSetTextDrawingMode (myContext, kCGTextFillStroke); // 5
CGContextSetRGBFillColor (myContext, 0, 1, 0, 1.0); // 6
CGContextSetRGBStrokeColor (myContext, 1.0, 1.0, 1, 1); // 7
CGContextShowTextAtPoint (myContext, 100, 50, "Quartz 2D", 9);
}