J'ai un UIView dans lequel je dessine des choses dans la méthode drawRect. Je voudrais superposer un calayer sur le CALayer UIView (self.layer) qui dessinerait un sous-ensemble des choses que je dessine dans le drawRect. Fondamentalement, je dessine beaucoup de cercles dans drawRect, et je voudrais en souligner quelques-uns sur la superposition. Je reçois les coordonnées des cercles d'un objet modèle qui est une propriété de l'UIView.Comment implémenter drawLayer: InContext dans le fichier d'implémentation d'un UIView?
Ma première tentative a été d'ajouter une sous-couche s
à la couche UIView, a fixé son délégué à la UIView et appeler sa méthode setNeedsDisplay
en cas de besoin, mais drawLayer:InContext
est appelé par les deux couches (s
et self.layer). Cela ne fonctionne pas:
-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
if (layer == s) {
// draw stuffs for s
}
else if (layer==self.layer) {
// do nothing
}
}
donne un UIView noir. Je voudrais dessiner s
à partir d'un endroit où j'ai accès à mon modèle de données, et d'autres variables utiles pour le dessin (largeur des lignes ..). J'ai résolu le problème en déplaçant le dessin de s
vers un objet séparé, mais cela m'oblige à définir également un pointeur du modèle dans cet objet et à copier d'autres paramètres.
Donc ma question est: dans un UIView dessiner son contenu en utilisant drawRect, comment ajouter une sous-couche dont le délégué est le même UIView?