我目前正在开发一个 MacOS 菜单栏应用程序,我的 NSPopover 相当宽(450 像素)。由于其宽度,如果用户没有其他菜单栏项目占用空间,它就会从屏幕上剪掉(请参见下图以获取视觉示例)。
这是我将弹出窗口添加到屏幕的代码:
popover?.show(relativeTo: statusBarButton!.bounds, of: (statusBarButton)!, preferredEdge: .minY)
我已经尝试过这里建议的答案:https://stackoverflow.com/a/48604455/13949789。问题是箭头不跟随,造成非常奇怪的外观(请参见下图的视觉示例)。
位置不错,但箭头位于错误的位置(使用其他帖子的建议):
位置不好,但箭头在正确的位置:
我知道这是一个老问题,但我今天偶然发现了同样的问题,我想我应该分享我的解决方案......
我的解决方法是在调用
show()
之前为弹出窗口设置明确的大小。
popover.contentViewController = NSHostingController(rootView: SomeView())
popover.contentSize = NSSize(width: 600, height: 300) // <= that's what did it
popover.show(relativeTo: button.bounds, of: button, preferredEdge: NSRectEdge.minY)