2009-06-30 5 views
1

J'ai créé un fichier NIB avec des contrôles de bouton, et en arrière-plan il a un ImageView qui contient un fichier PNG chargé à partir de mon projet. Ce que je veux faire est dessiner sur le dessus de l'image - imaginez que mon interface utilisateur est une horloge et je veux dessiner les mains de l'horloge sur l'image de fond.Puis-je utiliser DrawRect sur un UIImageView chargé depuis un NIB?

Est-ce l'approche correcte pour essayer de sous-classer UIImageView et utiliser son DrawRect comme lorsque j'utilise le DrawRect de la vue par défaut je ne vois rien à l'écran? Je suis un peu perdu car je trouve ce petit peu de documentation difficile à suivre. Merci.

Répondre

4

Créez une nouvelle UIView personnalisée (par exemple nommée HandsView) située au-dessus de votre vue d'arrière-plan (en l'ajoutant en tant que sous-vue de UIImageView). Dans la vue personnalisée, vous pouvez utiliser la méthode drawRect. Assurez-vous, vous effacez le contexte à transparent, de sorte que l'image d'arrière-plan peut être vue sous le HandsView.

Si vous souhaitez simplement dessiner des mains tournant, vous pouvez également essayer d'utiliser deux UIImageView fixes avec les images des mains et utiliser la propriété transform pour appliquer une rotation.

+0

Ce qu'il a dit. Sérieusement, c'est ce que vous voulez faire. UIKit utilise le "modèle du peintre" pour que vous puissiez toujours superposer plusieurs UIViews et CAlayers. –

+0

J'ai créé une vue dans Interface Builder et l'ai associée à une classe héritant de UIView. Si je définis la valeur alpha pour qu'elle soit transparente, je ne peux pas voir l'UIImage que j'ajoute ensuite à la vue car il est également transparent. Dois-je régler la transparence différemment ou y a-t-il quelque chose que je dois régler dans l'UIImage? – FiddleMeRagged

+0

Oups, je suis tellement désolé, je l'ai compris. Je n'avais pas besoin de changer la transparence dans IB, j'avais juste besoin d'ajouter le code suivant dans la classe UIView que j'ai faite. - (vide) awakeFromNib { self.backgroundColor = [UIColor clearColor]; } Ensuite, la vue que j'ai ajoutée n'est pas visible mais l'UIImage que j'ai ajouté par la suite est! Merci de votre aide. – FiddleMeRagged

Questions connexes