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下仍会渲染默认导航指示器(深色圆圈),可以通过两种方式解决:
方法1:隐藏现有NavigationLink
直接给 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
相关产品推荐
相关产品推荐

