具有最小宽度的 NSMenu:按 ⌥ 会导致自定义视图忽略最小宽度
NSMenu with minimum width: pressing ⌥ causes custom view to ignore the minimum width
我正在编写一个状态菜单应用程序,其中一个菜单项以大图像为中心。到目前为止,它一直运行良好 — 直到我尝试在状态菜单上设置最小宽度。
当我按下 ⌥(Option)键以使用备用菜单项时,其中包含图像的自定义视图会自行调整大小,以适应没有最小宽度时的大小。
这里有一些图片可以说明这个问题,在按住 ⌥ 之前和之后。灰色是自定义视图,应该 拉伸以覆盖整个宽度。
只要菜单打开,问题仍然存在,即使在释放 ⌥ 之后,但是当菜单关闭并重新打开时,问题就会消失,直到再次按下 ⌥。
我的系统版本是Mac OS X v10.12.6 (Sierra)。我的视图自动调整掩码是这样的:
let autoresizingMask: NSView.AutoresizingMask = [.minXMargin, .minYMargin, .maxXMargin, .maxYMargin, .width, .height]
Edit:如果我使视图在菜单项中居中而不拉伸(没有 .width
和 .height
),它仍然会移动到左边。
我刚刚意识到解决方案非常简单。我只需要将自定义视图的框架宽度设置为状态菜单的最小宽度。
let r = NSRect(x: 0, y: 0, width: statusMenuMinWidth, height: h)
我正在编写一个状态菜单应用程序,其中一个菜单项以大图像为中心。到目前为止,它一直运行良好 — 直到我尝试在状态菜单上设置最小宽度。
当我按下 ⌥(Option)键以使用备用菜单项时,其中包含图像的自定义视图会自行调整大小,以适应没有最小宽度时的大小。
这里有一些图片可以说明这个问题,在按住 ⌥ 之前和之后。灰色是自定义视图,应该 拉伸以覆盖整个宽度。
只要菜单打开,问题仍然存在,即使在释放 ⌥ 之后,但是当菜单关闭并重新打开时,问题就会消失,直到再次按下 ⌥。
我的系统版本是Mac OS X v10.12.6 (Sierra)。我的视图自动调整掩码是这样的:
let autoresizingMask: NSView.AutoresizingMask = [.minXMargin, .minYMargin, .maxXMargin, .maxYMargin, .width, .height]
Edit:如果我使视图在菜单项中居中而不拉伸(没有 .width
和 .height
),它仍然会移动到左边。
我刚刚意识到解决方案非常简单。我只需要将自定义视图的框架宽度设置为状态菜单的最小宽度。
let r = NSRect(x: 0, y: 0, width: statusMenuMinWidth, height: h)