Je souhaite occasionnellement modifier les dimensions d'un NSView programmatique. Pour ce faire, il est utile d'obtenir les dimensions de différentes vues, de les ajuster les unes par rapport aux autres, puis d'utiliser setFrame: pour repositionner.Pourquoi la méthode frame d'un NSView renvoie-t-elle de mauvais résultats?
Le problème est que la méthode frame renvoie généralement des NSRects qui sont clairement erronés, de mon point de vue.
J'ai un programme avec un NSPanel mis en place dans Interface Builder et diverses connexions à mon programme principal. Pour tester les NSRects retournés par frame, j'ai ouvert le panneau dans la méthode awakeFromNib: de mon application, j'ai récupéré des NSRects et je les ai imprimés sur la console.
Voici mon awakeFromNib:
- (void)awakeFromNib {
NSLog(@"in awakeFromNib");
[self showPrefsSheet:self]; //this is the prefs sheet with the controls of interest
//note that it does indeed pop up and is displayed
originalFrame = [aTextView frame];
NSLog(@"the frame is %d, %d, %d, %d", originalFrame.origin.x, originalFrame.origin.y, originalFrame.size.width, originalFrame.size.height);
originalFrame = [aButton frame];
NSLog(@"the frame is %d, %d, %d, %d", originalFrame.origin.x, originalFrame.origin.y, originalFrame.size.width, originalFrame.size.height);
return;
}
Les résultats de ce code ressemblent à ceci dans la console:
in awakeFromNib
the frame is 0, 0, 0, 0
the frame is 0, 1079230464, 0, 1078329344
Notez que (i) le panneau et les deux commandes sont affichées à l'écran ; (ii) Je sais pertinemment que les prises sont correctement connectées, parce que je peux faire des choses aux commandes par programme et les faire fonctionner; (iii) le constructeur de l'interface affiche des tailles d'image correctes dans l'inspecteur sous "Taille & Position".
En bref, tout le reste du programme fonctionne parfaitement. Il semble effectivement que les dimensions du cadre ne sont pas définies correctement ou quelque chose. Quelqu'un peut-il me dire comment récupérer les informations réelles sur les trames? Ou au moins expliquer les résultats que je vois?
Garçon, mon visage est rouge! Merci, Kailoa. Je me sens bête mais je suis content de pouvoir mettre ça derrière moi. – Dennis
pas de problème. Je vais ajouter une macro qui est super utile aussi. – amattn