18

IB では、これは [サイズ変更] チェックボックスをオンまたはオフにすることで簡単に実行できます。私の問題は、ボタンがクリックされるまでメインの NSWindow のサイズを変更できないようにしてから、サイズを変更できるようにしたいことです。

インターネットで検索しましたが、何も見つかりませんか? ウィンドウをサイズ変更可能またはプログラムで変更できないようにすることはできますか?

よろしくお願いします!

4

6 に答える 6

52

10.6 以降、 を使用してウィンドウのスタイル マスクを変更できます-[NSWindow setStyleMask:]。したがって、次のようにします。

Objective-C では

サイズ変更可能にするには:

window.styleMask |= NSWindowStyleMaskResizable;

サイズ変更不可にするには:

window.styleMask &= ~NSWindowStyleMaskResizable;

スイフトで

サイズ変更可能にするには:

mainWindow.styleMask = mainWindow.styleMask | NSWindowStyleMaskResizable

サイズ変更不可にするには:

mainWindow.styleMask = mainWindow.styleMask & ~NSWindowStyleMaskResizable
于 2012-05-06T20:21:41.490 に答える
8

この問題に対する Swift 3 の解決策は、次のOptionSet場所で説明されているクラスを使用することです。

https://developer.apple.com/reference/swift/optionset

要するに:

フラグのセットを置き換えるには、次のようにします。

myWindow.styleMask = [ .resizable, .titled, .closable ]

フラグを追加するには、次のようにします。

myWindow.styleMask.insert( [ .miniaturizable, .fullscreen ] )

フラグを削除するには、次のようにします。

myWindow.styleMask.remove( [ .resizable ] )
于 2016-11-01T21:49:51.700 に答える
4

ウィンドウの作成後にウィンドウのスタイル マスクを変更することはできませんが、ウィンドウの最小フレーム サイズと最大フレーム サイズを同じサイズに設定することはできます。あなたとサイズ変更可能なウィンドウがペン先から目覚めた後にそれを行い、ユーザーがボタンをクリックしたときに最大サイズとオプションで最小サイズを元に戻します。

于 2012-05-06T19:54:44.483 に答える
1

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)
}
于 2016-10-26T11:51:44.013 に答える