2012-09-15 22 views

Odpowiedz

23

Zastosowanie -setFrame:display:animate: dla maksymalnej kontroli:

NSRect frame = [window frame]; 
frame.size = theSizeYouWant; 
[window setFrame: frame display: YES animate: whetherYouWantAnimation]; 

Należy pamiętać, że współrzędne okienne są odwrócone od tego, co może być wykorzystane do. Punkt początkowy prostokąta jest jej dolny lewy w Quartz/Kakao na OS X. Aby zapewnić punkt początkowy pozostaje taka sama:

NSRect frame = [window frame]; 
frame.origin.y -= frame.size.height; // remove the old height 
frame.origin.y += theSizeYouWant.height; // add the new height 
frame.size = theSizeYouWant; 
// continue as before 
+1

@ Odpowiedź Leo ma punkt, a przynajmniej widziałem to samo - +/- należy odwrócić. –

+1

Mam spróbować tego kodu, ale nadal moje okno przesuwa się w dół. każde rozwiązanie, aby zatrzymać ruchome okno. –

+0

Działa idealnie dla mnie. Chciałem programowo zmienić rozmiar kontrolera okna, który był prezentowany jako widok arkusza. Dzięki! – Supertecnoboff

2

Zastosowanie setFrame:display:animate:

[window setFrame:NSMakeRect(0.f, 0.f, 200.f, 200.f) display:YES animate:YES]; 
+3

nie wiem co NSMakeFrame jest. Używam NSMakeRect. –

9

faktycznie wydaje się, że +/- potrzebę zostać odwrócony, aby utrzymać okno od poruszających się na ekranie:

NSRect frame = [window frame]; 
frame.origin.y += frame.size.height; // origin.y is top Y coordinate now 
frame.origin.y -= theSizeYouWant.height; // new Y coordinate for the origin 
frame.size = theSizeYouWant; 
+0

Albo jeszcze lepiej: frame.origin.y + = (frame.size.height - theSizeYouWant.height); – mojuba

0

Swift wersję

var frame = self.view.window?.frame 
frame?.size = NSSize(width: 400, height:200) 
self.view.window?.setFrame(frame!, display: true) 
Powiązane problemy