2012-07-27 63 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的视图控制器具有的,而不是一个我可以为他们自动创建一个窗口控制器与...混乱。