23

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

4

6 に答える 6

34

-setFrame:display:animate:最大限の制御に使用:

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

ウィンドウの座標は、慣れているものから反転していることに注意してください。長方形の原点は、OSXのQuartz/ Cocoaの左下にあります。原点が同じままであることを確認するには、次の手順に従います。

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
于 2012-09-15T14:59:34.857 に答える
12

ウィンドウが画面上で移動しないようにするには、実際には+/-を逆にする必要があるようです。

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;
于 2013-10-23T00:33:51.583 に答える
7

Swiftバージョン

var frame = self.view.window?.frame
frame?.size = NSSize(width: 400, height:200)
self.view.window?.setFrame(frame!, display: true)
于 2017-08-15T05:39:54.913 に答える
4

使用するsetFrame:display:animate:

[window setFrame:NSMakeRect(0.f, 0.f, 200.f, 200.f) display:YES animate:YES];
于 2012-09-15T14:58:19.213 に答える
4

通常、コンテンツのサイズ(タイトルバーを含まない)に基づいてウィンドウのサイズを変更したいと思います。

var rect = window.contentRect(forFrameRect: window.frame)
rect.size = myKnownContentSize
let frame = window.frameRect(forContentRect: rect)
window.setFrame(frame, display: true, animate: true)
于 2019-03-13T15:39:50.467 に答える
0

迅速な4.x7OSXの場合は2セント:

a)viewDidLoadを呼び出さないでくださいb)メインキューに移動します... b)しばらく待ちます...たとえば、次のように使用します。

private final func setSize(){
    if let w = self.view.window{
        var frame = w.frame
        frame.size = NSSize(width: 400, height: 800)
        w.setFrame(frame, display: true, animate: true)

    }
}
于 2019-03-13T07:56:00.973 に答える