IB では、これは [サイズ変更] チェックボックスをオンまたはオフにすることで簡単に実行できます。私の問題は、ボタンがクリックされるまでメインの NSWindow のサイズを変更できないようにしてから、サイズを変更できるようにしたいことです。
インターネットで検索しましたが、何も見つかりませんか? ウィンドウをサイズ変更可能またはプログラムで変更できないようにすることはできますか?
よろしくお願いします!
10.6 以降、 を使用してウィンドウのスタイル マスクを変更できます-[NSWindow setStyleMask:]
。したがって、次のようにします。
Objective-C では
サイズ変更可能にするには:
window.styleMask |= NSWindowStyleMaskResizable;
サイズ変更不可にするには:
window.styleMask &= ~NSWindowStyleMaskResizable;
スイフトで
サイズ変更可能にするには:
mainWindow.styleMask = mainWindow.styleMask | NSWindowStyleMaskResizable
サイズ変更不可にするには:
mainWindow.styleMask = mainWindow.styleMask & ~NSWindowStyleMaskResizable
この問題に対する Swift 3 の解決策は、次のOptionSet
場所で説明されているクラスを使用することです。
https://developer.apple.com/reference/swift/optionset
フラグのセットを置き換えるには、次のようにします。
myWindow.styleMask = [ .resizable, .titled, .closable ]
フラグを追加するには、次のようにします。
myWindow.styleMask.insert( [ .miniaturizable, .fullscreen ] )
フラグを削除するには、次のようにします。
myWindow.styleMask.remove( [ .resizable ] )
ウィンドウの作成後にウィンドウのスタイル マスクを変更することはできませんが、ウィンドウの最小フレーム サイズと最大フレーム サイズを同じサイズに設定することはできます。あなたとサイズ変更可能なウィンドウがペン先から目覚めた後にそれを行い、ユーザーがボタンをクリックしたときに最大サイズとオプションで最小サイズを元に戻します。
Xcode 8 / Swift 3 では、次のようにしてみてください。
// e.g., on a view controller’s viewDidAppear() method:
if let styleMask = view.window?.styleMask
{
view.window!.styleMask = NSWindowStyleMask(rawValue: styleMask.rawValue | NSWindowStyleMask.resizable.rawValue)
}