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

SwiftUI圆角按钮背景框颜色匹配及NavigationLink隐藏问题求助

解决方案

一、移除按钮周围的深色边框

macOS 下的 Button 默认带有系统样式的边框/聚焦效果,给按钮添加 .buttonStyle(.borderless) 即可去除默认边框,让自定义背景完全贴合需求:

Button(action: {
    self.displayPopupMessage4 = true
    // name = shell("my script")
}) {
    Text("About")
        .padding()
        .foregroundColor(.white)
        .background(.gray)
        .cornerRadius(100)
}
.buttonStyle(.borderless) // 去除默认边框
.alert(isPresented: $displayPopupMessage4){
    Alert(title: Text("Attention"), message: Text(shell("/opt/local/nvis/bin/nvis -v")), dismissButton:
            .default(Text("OK"), action: {self.showDetail = true})
    )
}

二、移除NavigationLink生成的深色圆圈

你当前用 EmptyView 作为标签的 NavigationLink,在macOS下仍会渲染默认导航指示器(深色圆圈),可以通过两种方式解决:

直接给 NavigationLink 添加 .hidden() 修饰符:

if #available(macOS 13.0, *) {
    NavigationLink(destination: DetailView().navigationBarBackButtonHidden(true), isActive: self.$showDetail) { 
        EmptyView() 
    }
    .hidden() // 隐藏系统默认指示器
} else {
    // Fallback on earlier versions
}

方法2:改用navigationDestination(推荐)

macOS 13+ 推荐使用 .navigationDestination 替代传统 NavigationLink,无需额外视图,也不会产生多余指示器:

// 在父视图的body末尾添加
if #available(macOS 13.0, *) {
    .navigationDestination(isPresented: $showDetail) {
        DetailView().navigationBarBackButtonHidden(true)
    }
} else {
    // Fallback on earlier versions
}

内容的提问来源于stack exchange,提问作者Phil Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:57:03