我有以下代码:(可以复制粘贴到新的 macOS 项目)
import Cocoa
import SwiftUI
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
var statusBarItem: NSStatusItem!
func applicationDidFinishLaunching(_ aNotification: Notification) {
let statusBar = NSStatusBar.system
statusBarItem = statusBar.statusItem(
withLength: NSStatusItem.squareLength)
statusBarItem.button?.title = ""
// Setting action
statusBarItem.button?.action = #selector(self.statusBarButtonClicked(sender:))
statusBarItem.button?.sendAction(on: [.leftMouseUp])
let statusBarMenu = NSMenu(title: "Status Bar Menu")
statusBarMenu.addItem(
withTitle: "Order an apple",
action: #selector(AppDelegate.orderAnApple),
keyEquivalent: "")
statusBarMenu.addItem(
withTitle: "Cancel apple order",
action: #selector(AppDelegate.cancelAppleOrder),
keyEquivalent: "")
// Setting menu
statusBarItem.menu = statusBarMenu
}
@objc func statusBarButtonClicked(sender: NSStatusBarButton) {
let event …
Run Code Online (Sandbox Code Playgroud) 我怎样才能在 SwiftUI 中做这样的事情?
估计这个视图是用 Cocoa 构建的,因为我什至无法正确布局 List 和 GroupBox:出现奇怪的边框。
SwiftUI 中没有 Table 视图,也没有 NSSegmentedControl。
这是我到目前为止得到的代码:
import SwiftUI
struct DetailView: View {
let text: String
var body: some View {
GroupBox {
Text(text)
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
.padding(.leading, 20)
.frame(width:300, height:300)
}
}
struct ContentView: View {
private let names = ["One", "Two", "Three"]
@State private var selection: String? = "One"
var body: some View {
NavigationView {
List(selection: $selection) {
Section(header:
Text("Header")) {
ForEach(names, id: \.self) { name in …
Run Code Online (Sandbox Code Playgroud) 我了解到可以像这样渲染系统图像:
Image(nsImage: NSImage(imageLiteralResourceName: NSImage.addTemplateName))
Run Code Online (Sandbox Code Playgroud)
我必须使用自定义 svg 吗?