Como criar um CGLayer a partir de um UIView para desenho fora da tela

Li o que acredito serem as partes relevantes do Guia de programação em quartzo 2D, mas não consigo encontrar uma resposta para o seguinte (elas parecem não falar muito sobre iOS no documento):

Meu aplicativo exibe um desenho em umUIView. De vez em quando eu tenho que atualizar o desenho de alguma forma, por exemplo alterar a cor de preenchimento de uma das formas (eu mantenhoCGPathRefs às formas importantes para redesenhá-las com uma cor de preenchimento diferente posteriormente). Conforme descrito na seção "Desenhando com um CGLayer" na página 169 do documento mencionado, eu estava pensando em desenhar o desenho inteiro em umCGContext que eu obteria de umCGLayer, igual a:

CGContextRef offscreenContext = CGLayerGetContext(offscreenLayer);

Então eu poderia fazer minha atualização fora da tela noCGContext e desenhe oCGLayer no meu UIView noUIViewdo método drawRect:, assim:

CGContextDrawLayerAtPoint(viewContext, CGPointZero, offscreenLayer);

O problema que estou tendo é: de onde encontro meuCGLayer de? Meu entendimento é que tenho que fazê-lo usandoCGLayerCreateWithContext e fornecer umaCGContext como um parâmetro do qual herda a maioria de suas propriedades. Obviamente, o contexto correto seria o contexto daUIViewque eu estou recebendo com

CGContextRef viewContext = UIGraphicsGetCurrentContext();

mas se não me engano, só consigo entender isso dentro dodrawRect: method e não é válido supor que o contexto que recebi será o mesmo na próxima vez que o método for chamado, ou seja, só posso usar esseCGContext localmente dentro do método

Então, como posso obter umCGContext que eu posso usar para inicializar meuCGLayer para criar uma tela fora da telaCGContext para atrair e desenhar toda a camada de volta para o meuUIViewéCGContext?

PS: Enquanto você está nisso; se algo acima não fizer sentido ou não for sensato, entre em contato. Estou apenas começando a entender o Quartz 2D.

questionAnswers(1)

yourAnswerToTheQuestion