2012-07-27 175 views
7

我是Mac OSx/Cocoa開發新手。在創建我的第一個應用程序的過程中,我遇到了一些問題,其中之一是我在綠色按鈕上的問題,該按鈕用於縮放目的。如何啓用/禁用變焦按鈕(綠色+按鈕)?

我想知道是否可以動態設置應用程序窗口的縮放按鈕的行爲?我是否違反了蘋果指導原則中的任何規定?

我想根據特定用戶指定按鈕的行爲。比方說,用戶被允許有一個縮放按鈕,然後該按鈕應該被啓用;否則,請禁用該按鈕。

在這種情況下,當應用程序啓動時,我檢查是否允許用戶啓用縮放按鈕。從這裏我想定製與縮放按鈕有關的窗口的行爲 - 根據用戶模式的先前檢查是否應啓用或禁用該窗口的行爲。

感謝您的幫助!

+0

爲什麼縮放會受到限制?它的行爲將基於內容的窗口大小,這是*不*祕密信息,因爲滾動條也需要它。用戶可以通過調整窗口大小來避開限制。窗口的大小是用戶端的終端屬性,而不是服務器端應該控制的。 – CTMacUser 2014-07-31 22:08:12

回答

9

您可以通過standardWindowButton:NSWindowZoomButton獲得對該按鈕的引用,然後對任何NSButton執行任何操作。

更新(斯威夫特):

var button = view.window?.standardWindowButton(NSWindowButton.ZoomButton) 
button?.enabled = false 
+0

請參閱下面的Sam Soffes的答案,瞭解正確的方法。 – 2017-03-22 21:59:03

+1

謝謝!如果你想保持你的窗口可調整大小,但不希望你的應用程序在按下按鈕時填滿整個屏幕,則此代碼將禁用綠色縮放按鈕。 – balazs630 2017-07-01 12:36:36

6

拼搶按鈕,並設置啓用不理想。最好的方法(10.6+)是使用setStyleMask:。以下是如何操作:

window.styleMask = NSTitledWindowMask | NSClosableWindowMask 

您可以隨意添加或刪除樣式。另一種不改變樣式的方法是將minSizemaxSize設置爲相同的大小。這也會禁用調整大小。

1

在斯威夫特3,這裏是去除能力的最簡單的方法:

var style = window.styleMask 
style.remove(.resizable) 
window.styleMask = style 

我在故事板通常這樣做是viewDidAppear的視圖控制器具有的,而不是一個我可以爲他們自動創建一個窗口控制器與...混亂。