【问题标题】:How to enable / disable the zoom button (green + button)?如何启用/禁用缩放按钮(绿色+按钮)?
【发布时间】:2012-07-27 01:58:45
【问题描述】:

我是 Mac OSx / Cocoa 开发的新手。在创建我的第一个应用程序期间,我遇到了一些事情,其中​​一个是我在绿色 + 按钮上的问题,该按钮用于缩放目的。

我想知道是否可以动态设置应用窗口缩放按钮的行为?我没有违反 Apple 准则中的任何规则吗?

我想根据特定用户指定按钮的行为。比如说,允许用户有一个缩放按钮,那么这个按钮应该是启用的;否则,请禁用该按钮。

在这种情况下,当应用程序启动时,我正在检查是否允许用户启用缩放按钮。从这里我想自定义与缩放按钮有关的窗口的行为 - 根据之前对用户模式的检查是否应该启用或禁用它。

感谢您的帮助!

【问题讨论】:

  • 为什么缩放会受到限制?它的动作将基于内容的窗口大小,这是不是秘密信息,因为滚动条也需要它。用户可以通过自己调整窗口大小来绕过限制。窗口的大小是用户端的终端属性,不应该由服务器端控制。

标签: macos cocoa button zooming nswindow


【解决方案1】:

您可以使用standardWindowButton:NSWindowZoomButton 获取对该按钮的引用,然后使用任何NSButton 执行您可以执行的任何操作。

更新(迅速):

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

【讨论】:

  • 查看下面 Sam Soffes 的回答,了解正确的方法。
  • 谢谢!如果您想保持窗口可调整大小,但不希望您的应用程序在按下按钮时填满整个屏幕,则此代码将禁用绿色缩放按钮。
【解决方案2】:

抓住按钮并启用设置并不理想。最好的方法(10.6+)是使用setStyleMask:。这样做的方法如下:

window.styleMask = NSTitledWindowMask | NSClosableWindowMask

您可以随意添加或删除样式。在不改变样式的情况下执行此操作的另一种方法是将minSizemaxSize 设置为相同的大小。这也将禁用调整大小。

【讨论】:

    【解决方案3】:

    在 Swift 3 中,这是移除该功能的最简单方法:

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

    我通常在 viewDidAppear 中为情节提要中的视图控制器执行此操作,这些视图控制器自动为它们创建了一个窗口控制器,而不是我可以弄乱的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 2014-06-27
      相关资源
      最近更新 更多