2010-06-06 5 views
3

J'ai une CATiledLayer qui est utilisée pour afficher une page PDF (cette CATiledLayer est le type de couche de mon UIView qui est une sous-vue d'un UIScrollView). Je veux ajouter des marqueurs de superposition sur cette page. Donc j'ajoute une sous-couche à mon CATiledLayer. Cette sous-couche accueille à nouveau les différentes couches du marqueur et agit comme une couche de groupement.Comment garder une CALayer, sous-couche d'une CATiledLayer, de changer son échelle après un zoom?

Alors graphiquement, j'ai: (garder à l'esprit que j'ai plusieurs marqueurs qui sont CALayers aussi, c'est l'art ascii après tout)

pdf page (CATiledLayer) 
---------------------- 
| CALayer   | 
| +---------+  | 
| | +----+ |  | 
| | |mker| |  | 
| | +----+ |  | 
| +---------+  | 
|     | 
---------------------- 

J'ai mis en place la drawLayer canonique: inContext: dans mon vue pour dessiner le pdf.

Lorsque j'effectue un zoom pour avoir plus de détails, le pdf est rendu correctement, mais les marqueurs sont mis à l'échelle. Peu importe ce que je fais aux limites du CALayer, mes marqueurs deviennent toujours plus gros et apparaissent déchiquetés.

Je voudrais avoir les marqueurs toujours de la même taille, comme quand ils ont été initialisés et d'abord montré lorsque la vue a été dessinée. Est-ce possible ? ou est-ce que j'utilise une mauvaise approche? Dois-je faire un dessin spécial pour mon CALayer contenu dans le drawLAyer: inContext: message?

Comme vous le voyez, il y a des choses qui me manquent pour résoudre mon problème. Merci pour toute aide que vous fournissez.

Répondre

1

Le marqueur est mis à l'échelle car il hérite des transformées de la super couche. Créez un autre niveau supérieur CALayer qui contient les marqueurs et autres objets que vous ne voulez pas redimensionner et superposez-le au CATiledLayer.

+0

J'ai finalement fini par utiliser un autre uiview qui contient les marqueurs. Je crois qu'il a le même effet. Je comprends qu'il n'est pas possible de remplacer l'héritage de transformation. Merci pour la réponse. – David

Questions connexes