NSMenu具有最小宽度:按⌥会导致自定义视图忽略最小宽度

问题描述 投票:1回答:1

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

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

这里有一些图片说明了在持有before之前和之后的问题。灰色是自定义视图,应该拉伸以覆盖整个宽度。

before after

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

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

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

编辑:如果我使视图居中在菜单项中而不是拉伸(没有.width.height),它仍然向左移动。

macos cocoa nsmenu nsmenuitem
1个回答
0
投票

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

let r = NSRect(x: 0, y: 0, width: statusMenuMinWidth, height: h)
© www.soinside.com 2019 - 2024. All rights reserved.