Существует дополнительная концепция, относящаяся к графическим контекстам в Какао.В Core Graphics есть CGContextRef, который должен передаваться каждому вызову рисования CG как явный параметр.Во многих других местах в iOS существует концепция текущего контекста, который является глобальным текущим контекстом (глобальным для каждого потока) как подразумеваемый параметр для многих вызовов рисования.Многие API, включая UIImage, рисуют в текущем контексте.См. Заголовок UIGraphics.h.
Обычно текущий контекст настраивается системой просмотра перед вызовом drawRect: именно поэтому в этих случаях кажется, что рисование работает.В случае, если вы создали контекст самостоятельно, вам необходимо явно настроить текущий контекст.Этот код должен работать для вас:
UIGraphicsPushContext( yourCGContext );
// Do your drawing here
UIGraphicsPopContext();
На Mac все аналогично в контексте NSGraphics. См. Документацию Apple для NSGraphicsContext .
NSGraphicsContext* nsGraphicsContext = [ NSGraphicsContext
graphicsContextWithGraphicsPort: yourCGContext flipped: NO ];
[ NSGraphicsContext saveGraphicsState ];
[ NSGraphicsContext setCurrentContext: nsGraphicsContext ];
// Do your drawing here
[ NSGraphicsContext restoreGraphicsState ];