如何解决以编程方式更改 NSWindow 框架时,NSPopover 位置不正确
我在 NSWindow
中有一个按钮,可以显示 NSPopover
:
popover = NSPopover()
popover?.behavior = .applicationDefined
popover?.contentViewController = self
let myDelegate = MyDelegate()
myDelegate.controller = self
popover?.delegate = myDelegate
popover?.show(relativeto: hostingButton.bounds,of: hostingButton.superview!,preferredEdge: .minY)
这很好用,我可以在弹出窗口打开时拖动窗口并调整其大小,零问题。
然而,该窗口显示动态内容,我可以选择使其保持“紧凑”,以便使用显示所有当前内容所需的最小高度。
当我的代码将 NSWindow
的 frame
设置为 window.setFrame(newFrame,display: true)
时,弹出框移动到屏幕的另一侧。它的垂直对齐是完美的,与新的窗口高度匹配,但它的水平位置完全偏离。
屏幕上的水平定位似乎与其超视图中的 hostingButton
的 x 坐标相匹配,即它确实看起来像 popover 正在使用按钮框架的 x 坐标作为屏幕坐标!?
我做错了吗?
有没有办法让弹出框、它的宿主视图、它的父视图或它的窗口再次进行定位?
如果没有,我可以手动将弹出窗口移动到正确的位置吗?
任何帮助将不胜感激!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。