【问题标题】:NSMenu with minimum width: pressing ⌥ causes custom view to ignore the minimum width具有最小宽度的 NSMenu:按 ⌥ 会导致自定义视图忽略最小宽度
【发布时间】:2017-11-10 21:09:26
【问题描述】:

我正在编写一个状态菜单应用程序,其中一个菜单项居中放置一张大图。到目前为止,它运行良好——直到我尝试在状态菜单上设置最小宽度。

当我按下 ⌥ (Option) 键以使用备用菜单项时,其中包含图像的自定义视图会将自身调整为没有最小宽度时的大小。

以下是一些说明问题的图片,在按住 ⌥ 之前和之后。灰色是一个自定义视图,应该拉伸以覆盖整个宽度。

只要菜单打开,问题就会一直存在,即使在释放 ⌥ 后也是如此,但当菜单关闭并重新打开时,问题就会消失,直到再次按下 ⌥。

我的系统版本是 Mac OS X v10.12.6 (Sierra)。我的视图自动调整大小掩码是这样的:

let autoresizingMask: NSView.AutoresizingMask = [.minXMargin, .minYMargin, .maxXMargin, .maxYMargin, .width, .height]

编辑:如果我将视图置于菜单项的中心而不拉伸(没有.width.height),它仍会向左移动。

【问题讨论】:

    标签: macos cocoa nsmenu nsmenuitem


    【解决方案1】:

    我刚刚意识到解决方案非常简单。我只需要将自定义视图的框架宽度设置为状态菜单的最小宽度。

    let r = NSRect(x: 0, y: 0, width: statusMenuMinWidth, height: h)
    

    【讨论】:

    • 这里什么时候设置宽度?在viewDidLoad?每当按下⌥键时?一些上下文可以帮助其他用户。
    • @Aᴄʜᴇʀᴏɴғᴀɪʟ:我在 Interface Builder 中设置了最小宽度。但是,只要在设置视图框架时使用正确的值,宽度的设置位置并不重要。
    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 2016-07-28
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 2015-03-15
    相关资源
    最近更新 更多