2012-09-15 29 views
16

プログラムでウィンドウサイズを設定するにはどうすればよいですか?私はIBでウィンドウを持っており、私はそれをもっと大きくするためにコードのサイズを設定したいと思っています。プログラムでNSWindowサイズを設定する

答えて

23

最大の制御のために使用-setFrame:display:animate::ウィンドウの座標はあなたが使用するかもしれないものから反転していることを

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

注意。長方形の原点は原点を確保するためにOS X上クォーツ/ココアで左の一番下にある同じまま:

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

@レオの答えにはポイントがありますが、少なくとも私は同じことを見ました - +/-を逆にする必要があります。 –

+1

私はこのコードを試しましたが、まだ私のウィンドウは下に移動しています。移動するウィンドウを停止する任意のソリューション。 –

+0

私のために完全に動作します。私は、シートビューとして表示されていたウィンドウコントローラをプログラムでサイズ変更したかったのです。ありがとう! – Supertecnoboff

2

使用setFrame:display:animate:

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

をNSMakeFrameが何であるかを知らないでください。私はNSMakeRectを使用します。 –

9

実際に必要性がウィンドウを維持するために反転させること+/-思われます画面に移動する:

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

またはそれ以上の改善:frame.origin.y + =(frame.size.height - theSizeYouWant.height); – mojuba

0

スウィフトバージョン

var frame = self.view.window?.frame 
frame?.size = NSSize(width: 400, height:200) 
self.view.window?.setFrame(frame!, display: true) 
関連する問題