【发布时间】:2022-11-10 17:08:03
【问题描述】:
我正在尝试为 macOS 12 制作一个菜单栏应用程序,当单击菜单栏图标时会显示一个弹出窗口。正如您从随附的屏幕截图中看到的那样,我显示了弹出框,但它实际上并未与菜单栏图标对齐。以下是相关代码:
class AppDelegate: NSObject, NSApplicationDelegate {
var popover: NSPopover!
var statusBarItem: NSStatusItem!
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Create the SwiftUI view that provides the window contents.
let contentView = ContentView()
// Create the status item
statusBarItem = NSStatusBar.system.statusItem(withLength: CGFloat(NSStatusItem.variableLength))
// Create the popover
let popover = NSPopover()
popover.behavior = .transient
popover.contentViewController = NSHostingController(rootView: contentView)
self.popover = popover
if let button = statusBarItem.button {
button.image = NSImage(systemSymbolName: "eyes", accessibilityDescription: "Eyes")
button.action = #selector(togglePopover(_:))
}
}
@objc func togglePopover(_ sender: AnyObject?) {
guard let button = statusBarItem.button else { return }
if popover.isShown {
popover.performClose(sender)
} else {
popover.show(relativeTo: button.bounds, of: button, preferredEdge: .maxY)
}
}
}
【问题讨论】:
-
试试preferredEdge:.minY
标签: swift macos swiftui appkit nspopover