macOS的menuBar功能非常强大,我们在开发macOS应用的时候,经常需要利用menuBar实现功能。然而网上关于menuBar开发的文档却甚少,更别提用上SwiftUI开发的。这篇文章从以下几部分讲解用SwiftUI开发menuBar/statusBar的方法,希望对大家有帮助:
一、在statusBarItem弹出Popover
二、更改Popover背景色
三、在statusBar上控制主窗口的开关
四、在statusBar上控制statusBar的显隐/开关
一、在statusBarItem弹出Popover
statusBar弹出menu是比较简单的,但是如果我们要做一些定制,就需要用到Popover了
创建Popover
在AppDelegate文件中,声明一个NSPopover变量(下面的statusBarItem之后会用到)
var popover: NSPopover! var statusBarItem: NSStatusItem!
随后,在applicationDidFinishLaunching中, ContentView 初始化之后,加上
// Create the popover
let popover = NSPopover()
popover.contentSize = NSSize(width: 400, height: 400)
popover.behavior = .transient //代表用户点击其他区域时popover自动消失
popover.contentViewController = NSHostingController(rootView: contentView)
self.popover = popover
此时我们的AppDelegate文件应该长这样:
import Cocoa
import SwiftUI
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var popover: NSPopover!
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Create the SwiftUI view that provides the window contents.
let contentView = ContentView()
// Create the popover
let popover = NSPopover()
popover.contentSize = NSSize(width: 400, height: 500)
popover.behavior = .transient
popover.contentViewController = NSHostingController(rootView: contentView)
self.popover