我认为最灵活的方法是您应该自己控制主窗口而不是故事板。
当应用程序完成启动时,您可以根据您的应用程序策略显示或不显示主窗口,如下所示:
switch AppDefaults.shared.applicationRunMode {
case .menuAndDock:
_ = ApplicationMode.toggleDock(show: true)
MainWindowController.shared.window?.makeKeyAndOrderFront(nil)
case .menuOnly:
_ = ApplicationMode.toggleDock(show: false)
_ = MainWindowController.shared.window
default:
MainWindowController.shared.window?.makeKeyAndOrderFront(nil)
}
该toggleDock
方法的实际作用是改变应用程序的显示方式。
// Get transform state.
let transformState = show ?
ProcessApplicationTransformState(kProcessTransformToForegroundApplication)
: ProcessApplicationTransformState(kProcessTransformToUIElementApplication)
// Show / hide dock icon.
var psn = ProcessSerialNumber(highLongOfPSN: 0, lowLongOfPSN: UInt32(kCurrentProcess))
let transformStatus: OSStatus = TransformProcessType(&psn, transformState)
return transformStatus == 0
UIElement
在info.plist
唯一能让你的 Cocoa 应用程序隐藏 UI 的能力。