CALayer délégué méthode drawLayer pas appelé
Mon objet d'une sous-classe de NSObject a CALayer variable d'instance. Je l'utilise pour le dessin et la mise en cache de contenu avec son délégué ensemble de mon objet.
Mais pour une raison quelconque drawLayer:inContext:
méthode n'est JAMAIS appelé. Alors que actionForLayer:forKey:
délégué méthode est appelée impliquant le délégué est configuré correctement avec layer.delegate = self
dans l'objet de la méthode init.
Toutes les suggestions sur ce qu'est la prévention ma couche méthode de dessin drawLayer:inContext:
de se faire appelé ?
Je suis appelé le [layer setNeedDisplay]
souvent. Donc je suppose que c'est une erreur fondamentale.
OriginalL'auteur | 2009-07-30
Vous devez vous connecter pour publier un commentaire.
drawLayer:inContext:
n'obtiendrez pas appelé si votre cadre est CGRectZero ou hors de l'écran. Aussi, si votre CALayer n'est pas attaché à un écran couche, il ne sera jamais à dessiner, peu importe combien de fois vous appelezsetNeedsDisplay
correction d'une erreur... merci.
OriginalL'auteur amattn
De mettre en œuvre un vide
drawRect:
Prises à partir de la ZoomingPDFViewer projet:-
Apple est à dire se développent pas à mettre en œuvre un vide drawRect méthode dans UIView qu'il impacte les performances. D'appel[setNeedsDisplay] semble être une meilleure solution. (Qui a travaillé pour moi.)
OriginalL'auteur windson
Le calque de l'objet
setNeedsDisplay
doit être appelée. Tout simplement l'ajout de la couche de sous-couche ne pas le faire pour vous. Cela a entre Ray Wenderlich de CALayer tutoriel.OriginalL'auteur herzbube
Si vous êtes éventuellement à l'aide de la CALayer avec une UIView puis le délégué doit être le point de vue de l'objet lui-même:
De l'iOS CALayer documentation:
"Dans iOS, si la couche est associée à une UIView objet, cette propriété doit être définie pour le point de vue qui est propriétaire de la couche."
Sans doute "associée à une UIView objet" signifie que la couche est le point de vue de la racine de la couche (désignés par la
layer
de la propriété). Pour les sous-couches d'une UIView racine de la couche, le délégué peut certainement être quelque chose d'autre que l'objet de vue.OriginalL'auteur persiflage
Si vous avez un multi-thread application, où le traitement de fond des lecteurs de la nécessité de mettre à jour le CALayer, vous devez appeler setNeedsDisplay dans le thread principal
OriginalL'auteur Jason Crocker