2009-10-27 6 views
0

J'utilise un conteneur UIView pour héberger un UIImageView et faire un dessin personnalisé. À ce stade, j'aimerais dessiner au-dessus de ma sous-vue. Donc drawRect: dans mon conteneur, UIView ne dessine que sous les sous-vues.Méthode de surcharge (en particulier drawRect :) sans sous-classe

Existe-t-il un moyen de surcharger drawRect: dans ma sous-vue sans le sous-classer?

Je pense que la méthode swizzling peut être la réponse, mais j'espère pas.

(NOTE: oui, il aurait été plus intelligent d'avoir le UIView être la sous-vue du UIImageView, mais malheureusement je me suis engagé à mon erreur maintenant.)

Répondre

0

Etes-vous sûr que vous voulez dire la surcharge et non remplacer ? Surcharge - créer une nouvelle méthode avec le même nom de base mais avec des arguments différents et donc un sélecteur différent - pourrait être accomplie en ajoutant une nouvelle catégorie de méthode contenant votre nouvelle méthode à la classe existante. Surcharge - modification du comportement d'une méthode existante - il faudrait soit appliquer un correctif monkey dans la table de méthodes de la classe au moment de l'exécution (par exemple, en effectuant un swizzling), soit sous-classer.

+0

Merci pour la clarification. Le remplacement est définitivement ce dont j'ai besoin, puisque drawRect: n'est jamais appelé directement. – SooDesuNe

Questions connexes