54 votes

Apple Interface Builder : ajout d'une sous-vue à UIImageView

J'ai créé UIImageView avec l'aide d'Interface Bulder. Maintenant je veux placer une étiquette à l'intérieur (comme sa sous-vue). Dans le code, je peux taper quelque chose comme : [myUIImageView addSubview:myUILabel]; Mais puis-je le faire avec l'aide de l'IB ? J'ai trouvé la solution pour UIView mais je ne trouve rien de similaire pour UIImageView .

112voto

Raj Points 2961

Vous ne pouvez pas ajouter un subview à UIImageView dans le constructeur d'interface pour des raisons connues seulement d'Apple ! Vous avez raison de dire que vous pouvez ajouter une sous-vue de manière programmatique, mais dans ce cas, les frais généraux liés à la définition des masques de redimensionnement automatique et au placement des sous-vues devraient tous être gérés dans le code, ce qui est fastidieux.

Il existe donc une solution de contournement facile. Au lieu de faire glisser une instance de UIImageView dans la plume, faites simplement glisser un UIView et changez sa classe en UIImageView à partir de UIView (option cmd+4 de l'inspecteur). La seule différence que vous trouverez dans la plume pour l'instance imageView par défaut et votre nouvelle instance de sous-classe UIImageView est que vous ne pouvez pas définir l'image de votre nouvelle imageView à partir de la plume (option cmd+1). Ainsi, dans le -viewDidLoad de son viewController approprié, définissez l'image sur cette sortie de UIImageView.

En procédant ainsi, vous êtes libre d'ajouter des sous-vues à vos instances "maintenant UIImageView" dans le constructeur d'interface, ce qui est beaucoup plus facile.

J'espère que cela vous aidera. . .

12voto

Jim Thio Points 7137

Je voudrais ajouter une réponse.

Bien que cela craigne que vous ne puissiez pas ajouter une sous-vue à UIImageView vous pouvez obtenir le même effet en incorporant UIView avec un fond transparent (couleur claire).

Ensuite, mettez le UIImageview Avant cela.

Ainsi, le UIView a les sous-vues et la UIImageview est l'arrière-plan de la UIView .

Je pense que c'est l'intention d'apple.

Voici une capture d'écran :

enter image description here

Voici le résultat :

enter image description here

N'oubliez pas de définir l'arrière-plan comme une couleur claire.

enter image description here

Maintenant, si quelqu'un pouvait m'indiquer un tutoriel sur la façon de faire cela, ce serait génial. J'ai passé des heures à le faire à la manière de la réponse cochée. La réponse cochée est une bonne réponse mais très peu intuitive car vous ne pouvez pas voir clairement votre image de fond pendant que vous travaillez. Je pense que la mienne est la bonne façon de faire.

-3voto

Nirav Points 127

Dans la dernière version de XCode (4.5), il existe une option permettant de glisser-déposer les contrôles requis vers le parent.

C'est assez facile. Vous trouverez ci-joint une capture d'écran à ce sujet. J'ai fait glisser le Label/TextField et le bouton vers UIImageView. enter image description here

-5voto

user2110149 Points 1

Utilisez ce code :

UIImage *image = [UIImage imageNamed:@"background.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[self.view insertSubview:imageView atIndex:0];

(remplacer background.png avec image ) (remplacer atIndex:0 avec l'endroit de l'index Root où vous voulez insérer l'image et c'est parti.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X