2010-12-17 24 views
8

W jaki sposób programowo ustawić rozmiar programu NSView?Jak programowo ustawić rozmiar NSView?

-(void)awakeFromNib { 
     self.frame.size.width = 1280; // Does nothing... 
     self.frame.size.height = 800; // ...neither does this. 
     ... 

Ustawienia rozmiaru w końcówce (Mac OSX) działają poprawnie, ale chcę zrobić to w kodzie.

Odpowiedz

15

Po wywołaniu self.frame, zwraca dane w ramce, a nie wskaźnik. Dlatego każda zmiana wyniku nie jest odzwierciedlana w widoku. Aby zmienić widok, trzeba ustawić nową ramkę po dokonaniu zmiany:

- (void)awakeFromNib { 
    NSRect f = self.frame; 
    f.size.width = 1280; 
    f.size.height = 800; 
    self.frame = f; 
    //... 
} 
+2

Dziękuję bardzo. Straciłem wolę życia. Teraz nie tylko coś się zaczęło dziać, ale odkrywam, że jest to niewłaściwe pytanie - odpowiedź na to pytanie znajduje się poniżej. –

+0

@ughoavgfhw po prostu wielkie dzięki – pregmatch

7

Użyj -setFrameSize metoda: lub -setFrame:

+0

Prawidłowa odpowiedź. Bezpośrednia zmiana właściwości ramki wydaje się nie działać przynajmniej w Swift. – udondan

4

programowo ustawień Aplikacja jest wielkość (to jest to, co chciałem zrobić) trzeba to zrobić: -

- (void)awakeFromNib { 
    ... 
    NSWindow* w = [self window]; 
    NSRect f; 
    f.size.width = 1280; 
    f.size.height = 800; 
    [w setFrame:f display:YES]; 
} 
Powiązane problemy