Set NSWindow Size programmatically

atomikpanda picture atomikpanda · Sep 15, 2012 · Viewed 27.6k times · Source

How can I set the window size programmatically? I have a window in IB and I want to set the size of it in my code to make it larger.

Answer

Jonathan Grynspan picture Jonathan Grynspan · Sep 15, 2012

Use -setFrame:display:animate: for maximum control:

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

Note that window coordinates are flipped from what you might be used to. The origin point of a rectangle is at its bottom left in Quartz/Cocoa on OS X. To ensure the origin point remains the same:

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