Wie kann ich die Fenstergröße programmgesteuert festlegen? Ich habe ein Fenster in IB und ich möchte die Größe in meinem Code festlegen, um es größer zu machen.NSWindow Größe programmgesteuert festlegen
Antwort
Verwenden -setFrame:display:animate:
für maximale Kontrolle:
NSRect frame = [window frame];
frame.size = theSizeYouWant;
[window setFrame: frame display: YES animate: whetherYouWantAnimation];
Beachten Sie, dass Fensterkoordinaten umgedreht werden von dem, was Sie vielleicht verwendet werden. Der Ursprungspunkt eines Rechtecks ist an seiner Unterseite auf OS X. in Quarz/Cocoa links den Ursprungspunkt Damit bleibt das gleiche:
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
Verwenden setFrame:display:animate:
[window setFrame:NSMakeRect(0.f, 0.f, 200.f, 200.f) display:YES animate:YES];
Sie wissen nicht, was NSMakeFrame ist. Ich benutze NSMakeRect. –
Es scheint tatsächlich, dass +/- Bedarf umgekehrt werden Fenster zu halten von auf dem Bildschirm zu bewegen:
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;
Oder noch besser: frame.origin.y + = (frame.size.height - theSizeYouWant.height); – mojuba
Swift Version
var frame = self.view.window?.frame
frame?.size = NSSize(width: 400, height:200)
self.view.window?.setFrame(frame!, display: true)
@ Leo Antwort hat einen Punkt, oder zumindest sah ich das gleiche - die +/- sollte umgekehrt werden. –
Ich habe diesen Code versucht, aber immer noch mein Fenster nach unten bewegen. jede Lösung, um das Bewegen des Fensters zu stoppen. –
Funktioniert perfekt für mich. Ich wollte programmgesteuert die Größe eines Fenstercontrollers ändern, der als Blattansicht angezeigt wurde. Vielen Dank! – Supertecnoboff