web-dev-qa-db-fra.com

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 d'IB? J'ai trouvé la solution pour UIView, mais je ne trouve pas quelque chose de similaire pour UIImageView.

54
kpower

Vous ne pouvez pas ajouter une sous-vue à UIImageView dans le générateur d'interface pour des raisons uniquement connues d'Apple! Vous avez raison de dire que vous pouvez ajouter la sous-vue par programme, mais ensuite, la surcharge de définition des masques de redimensionnement automatique et des emplacements des sous-vues doit être gérée dans le code, ce qui est lourd.

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

Ce faisant, vous êtes libre d'ajouter des sous-vues à vos instances "maintenant UIImageView" dans le générateur d'interface, ce qui est très facile.

J'espère que cela t'aides . . .

112
Raj Pawan Gumdal

Je voudrais ajouter une réponse.

Bien qu'il soit nul, vous ne pouvez pas ajouter de sous-vue à UIImageView, vous pouvez obtenir le même effet en incorporant UIView avec un fond transparent (couleur claire).

Mettez ensuite le UIImageview AVANT.

Ainsi, le UIView a les sous-vues et le UIImageview est l'arrière-plan du 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 vraiment me diriger vers un tutoriel sur la façon de le faire, ce serait génial. J'ai passé des heures à le faire de la manière la plus vérifié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 d'arrière-plan lorsque vous travaillez. Je pense que le mien est la bonne façon de le faire.

13
user4951