10 votes

Lecture de l'événement de redimensionnement de la fenêtre NSWindow

Je me demandais si quelqu'un sait comment lire quand NSWindow est redimensionnée? Imaginons que j'ai un bouton dans une fenêtre vide (autre que le bouton), puis l'utilisateur redimensionne la fenêtre depuis le coin en bas à droite, maintenant je dois faire en sorte que le bouton se redimensionne également lorsque la fenêtre est redimensionnée. Je sais comment redimensionner un bouton, et je sais comment redimensionner une fenêtre, et je sais plein de trucs, mais je ne sais pas comment être notifié chaque fois que l'utilisateur redimensionne la fenêtre, des conseils?

12voto

Marm0t Points 921

Pouvez-vous utiliser la méthode de délégué ‑windowDidResize: ?

5voto

NSparesh Points 51

Dans l’éveil du fichier .m de votre projet, écrivez

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(screenResize) name:NSWindowDidResizeNotification object:nil];

et créez une méthode maintenant

(void)screenResize
{
    NSRect rect = Preloader.frame;
    rect = NSMakeRect(self.view.frame.origin.x+self.view.frame.size.width/2, self.view.frame.origin.y+self.view.frame.size.height/2, Preloader.frame.size.width, Preloader.frame.size.height);
    Preloader.frame = rect;
    NSLog(@"X = %f, Y = %f, W = %f, H= %f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
}

et lorsque vous sortez de cette classe, écrivez

    [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidResizeNotification object:nil];

-2voto

mLar Points 498

Sur Xcode 4.3 et ultérieur, utilisez le autolayout pour ajouter des contraintes au bouton, vous pouvez obtenir des mises en page très complexes sans écrire une seule ligne de code.

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