Interface Builder : Des éléments n'apparaà®ssent pas

apocaalypsoapocaalypso Membre
00:05 modifié dans API AppKit #1
Bonjour,

Je vient de rencontrer un petit soucis à  l'instant : j'ai plusieurs labels sur une ImageView dans Interface Builder. Mais quand je build et que mon app se lance, l'image apparaà®t mais les labels non ?
Pourtant ils ne sont pas hidden ni rien.

Quelqu'un aurait-il rencontré ce problème ?
Merci !

Réponses

  • AliGatorAliGator Membre, Modérateur
    00:05 modifié #2
    Le problème est que tes UILabels sont SUR ton UIImageView, et non en tant que subview de ton UIImageView.
    Soit tu les ajoutes en tant que subview de ton UIImageView (et ça je crois que c'est bizarrement pas faisable dans IB pour une UIImageView alors que c'est faisable pour une UIView "de base", bien que UIImageView dérive de UIView, donc tu devras potentiellement le faire par code), soit tu transformes ton UIImageView en UIView et si c'est juste pour afficher une image tu peux te contenter d'implémenter le drawRect de ton UIView pour qu'elle dessine l'image de fond.

    Le plus simple étant d'avoir des IBOutlets sur tes UILabels et les rajouter en subview (attention à  adapter la "frame" de ces UILabels qui devra donc être par rapport à  ta UIImageView et non ta fenêtre ou vue parente) à  mon avis, teste voir si ça résoud ton problème pour confirmer que ça vient de là .
    D'ailleurs tu dois certainement avoir des warnings dans IB (petite icône jaune du point d'exclamation en bas à  droite de ta fenêtre de XIB dans IB, et warning quand tu compiles, du moins pour la première fois ou après un clean, le projet dans Xcode) t'indiquant que les views s'overlappent ("UIView overlaps other UIView" un truc comme ça)
  • apocaalypsoapocaalypso Membre
    00:05 modifié #3
    Effectivement Ali, le problème vient bien du fait que mes labels n'étaient pas les subviews de mon ImageView. J'ai donc remplacé mon ImageView par une NSView dont l'image de background est dessinée via le drawRect, en m'assurant de re-coller les labels dans la vue en la sélectionnant dans IB.
    Meric beaucoup Ali, je m'en souviendrait pour la prochaine fois  ;)
  • AliGatorAliGator Membre, Modérateur
    00:05 modifié #4
    Toujours lire les warnings, surtout quand on a un souci puisque justement ils peuvent être une piste ;)
  • apocaalypsoapocaalypso Membre
    00:05 modifié #5
    Oui mais justement là  j'en avais pas !
    Oui, sinon ils m'auraient mis sur la piste.
  • Nebuchad34Nebuchad34 Membre
    00:05 modifié #6
    Je me suis fait avoir plusieurs fois avec ça... ^^
  • apocaalypsoapocaalypso Membre
    00:05 modifié #7
    dans 1251475001:

    Je me suis fait avoir plusieurs fois avec ça... ^^


    Lol, oui, c'est bizarre.
Connectez-vous ou Inscrivez-vous pour répondre.