プログラムでウィンドウサイズを設定するにはどうすればよいですか?私はIBにウィンドウがあり、コード内でウィンドウのサイズを設定してそれを大きくしたいと考えています。
使用する -setFrame:display:animate:
最大限の制御:
NSRect frame = [window frame];
frame.size = theSizeYouWant;
[window setFrame: frame display: YES animate: whetherYouWantAnimation];
ウィンドウの座標は、慣れ親しんでいるものから反転していることに注意してください。長方形の原点はOS Xの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
ウィンドウが画面上で移動しないようにするには、実際には+/-を逆にする必要があるようです。
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;
Swiftバージョン
var frame = self.view.window?.frame
frame?.size = NSSize(width: 400, height:200)
self.view.window?.setFrame(frame!, display: true)
使用する - setFrame:display:animate:
[window setFrame:NSMakeRect(0.f, 0.f, 200.f, 200.f) display:YES animate:YES];
通常、コンテンツのサイズ(タイトルバーを含まない)に基づいてウィンドウのサイズを変更します。
var rect = window.contentRect(forFrameRect: window.frame)
rect.size = myKnownContentSize
let frame = window.frameRect(forContentRect: rect)
window.setFrame(frame, display: true, animate: true)
Swift 4.x 7 OSXの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)
}
}