J'ai créé un contexte CG de 800 pixels de large et 1200 pixels de hauteur. J'ai créé CGLayer sur ce contexte qui a été transformé (mis à l'échelle, traduit et pivoté). Ainsi, à un moment donné, comme le CGLayer est plus grand que le contexte et qu'il a été traduit, pivoté, etc., toutes les parties de ce CGLayer ne se trouvent pas dans le contexte. Voir l'image suivante:iPhone: dessin optimisé en quartz
Comme vous pouvez le voir par l'image, certaines parties de la couche tombe en dehors de la zone de contexte. Quand je rends la composition finale à l'aide
CGContextDrawLayerInRect(context, superRect, objectLayer);
il va rendre la couche complète, y compris les parties inutiles en dehors du contexte.
Mon problème est le suivant: si je peux faire en sorte que les parties pertinentes soient dessinées à l'intérieur du contexte, je peux le rendre plus rapide et économiser de la mémoire.
Est-il possible de le faire?
REMARQUE: LA COUCHE contient de la transparence.
Veuillez ne pas donner de solutions qui n'impliquent pas CGLayers.
merci d'avance.
Non, malheureusement, je dois utiliser CGLayer. Une des raisons est parce que je dois écrire hors écran. Mais de toute façon je n'ai pas pu trouver un code simple qui explique comment fonctionne CATiledLayer. Il semble que ce soit l'une de ces fonctions ésotériques qu'Apple a documentées comme un enfer. – SpaceDog
@Mike: Ce n'est ni une fonction ésotérique ni une fonction, c'est une sous-classe CALayer. – Chuck
J'ai trouvé cet exemple utile dans le passé, il dessine en utilisant des fonctions PDF, mais illustre très bien le carreleur. http://www.olivetoast.com/blog/2009/08/simple-uiscrollview-catiledlayer-pdf-example/ – Mobs