You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何增大Mac菜单栏应用窗口的圆角半径?

调整Mac MenuBarExtra弹出窗口的圆角半径

要增大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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 17:12:46