UIView, Autoresizing & XIB
NiClou
Membre
Hello à tous,
Je suis actuellement confronté à un problème.
Ce que je fais:
J'affiche une UIView à partir d'un xib comme template:
NSArray* topLevelObjects = [[NSBundle mainBundle] loadNibNamed:nibName owner:nil options:nil];
// Find a view inside the nib file
for (id obj in topLevelObjects)
{
if([obj isKindOfClass:[UIView class]])
{
view = obj;
break;
}
}
Voila en gros ce que je fais actuellement.
Lorsque je charge un nib/xib, je charge toutes ses propriétés.
Je veux avoir la liberté de rajouter autant de nib que je veux en utilisant uniquement les propriétés du xib.
Le soucis, c'est que comme c'est pas un viewController, y'a un certain nombre de choses qui ne fonctionnent pas. Par exemple l'autoresizing ne fonctionne pas.
Comment je peux faire pour que ça fonctionne?
Je suis ouvert à toutes proposition
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pas de tout compris ce que tu veux faire
J'aimerais pouvoir faire de l'autoresizing à partir des propriétés du xib.
Dans le code au dessus, je montre comment "je charge le xib".
Je crois que l'autoresizing se met en marche à partir du moment où ta vue est affichée.
J'ai ça.
Seulement quand elle s'affiche le 320 sevrait s'étendre ou je loupe quelque chose?
Je l'affiche ^^'
Donc, une fois que tu as placé ta vue (qui fera 320 au moment où tu vais un addSubview pour l'ajouter), si jamais ENSUITE, plus tard, sa vue parente se redimensionne, alors ta vue devrait s'étirer en largeur proportionellement.
Par contre si ta vue parente fait 400, et que ta vue, une fois extraite du XIB, fait 320, le fait de juste faire "[parent addSubview:vueDuXib]" ne va pas magiquement changer la frame de vueDuXib pour qu'elle se mette à faire 400. (Et encore heureux d'ailleurs ! Sinon ça veut dire que tu ne pourrais pas positionner comme tu veux les subviews que tu rajoutes dans une vue parente).
Si tu veux que, LORS DE L'AJOUT de vueDuXib dans sa vue parente, alors vueDuXib s'adapte pour faire la taille de la vue parente, bah il faut que tu lui dises, il n'y a pas de miracle. Typiquement tu vas faire "vueDuXib.frame = parent.bounds" donc.
AutoResizingMask c'est pour dire quelles dimensions de ta vue se resizent automatiquement... quand leur vue parente change de frame. Pas quand tu ajoutes la vue à sa vue parente.
Le problème c'est que ma vue "parente" hérite de toutes les propriétés de mon xib.
Je dois passer à coté de quelque chose. Faut que je me pose la dessus.
Ceci pourrais t'aider à m'aider Ali? ^^
...Sinon je peux pas faire un truc du genre:
//En gros
Je me suis mal exprimé.
vueParente = vueDuNib ;
C'est pas de l'héritage, je me suis mal exprimé.
Bon et quel est le problème alors, si ta vue racine du XIB récupère comme tu le dis l'AutoresizingMask du XIB, quelle est la question alors ?
Ceci dit il me semble qu'on ne peut pas définir d'AutoResizingMask pour la vue racine d'un XIB, donc soit tu les définis par code, soit tu encapsules dans ton XIB ta vue racine dans une vue de plus haut niveau, juste pour pouvoir lui mettre les AutoResizingMask, puis tu la redescends d'un niveau.