如何增大Mac菜单栏应用窗口的圆角半径?
要增大SwiftUI MenuBarExtra弹出窗口的圆角半径,你可以通过以下两种方式绕过系统默认样式实现:
方法一:修改AppKit窗口属性
MenuBarExtra的弹出窗口本质是NSWindow,可在视图加载时定位并修改其圆角参数:
MenuBarExtra("My Menu", systemImage: "battery.100") { VStack { // 你的菜单内容 Text("电池状态") Button("设置") {} } .padding() .onAppear { // 筛选MenuBarExtra对应的弹出窗口 guard let menuWindow = NSApplication.shared.windows.first(where: { $0.styleMask.contains(.popUpMenu) && !$0.isKeyWindow }) else { return } menuWindow.contentView?.wantsLayer = true // 设置目标圆角半径(系统电池图标约为20) menuWindow.contentView?.layer?.cornerRadius = 20 menuWindow.contentView?.layer?.masksToBounds = true // 移除系统默认背景,避免圆角边缘透出 menuWindow.backgroundColor = .clear } } .windowStyle(.hiddenTitleBar)
方法二:SwiftUI视图层自定义圆角
如果不想依赖AppKit,可给菜单内容套一个带圆角的背景,模拟窗口圆角效果:
MenuBarExtra("My Menu", systemImage: "battery.100") { VStack { // 你的菜单内容 Text("电池状态") Button("设置") {} } .padding() .background(Color.windowBackground) .cornerRadius(20) .padding(1) // 避免内容紧贴窗口边缘 } .windowStyle(.hiddenTitleBar)
注意:方法一的效果更贴近系统原生控件(如电池图标)的表现,方法二适合快速实现但可能存在细微边缘差异。
内容的提问来源于stack exchange,提问作者Rahul Bir
相关产品推荐
相关产品推荐

