SwiftUI添加按钮样式后Xcode预览中按钮文本消失问题求助
解决SwiftUI BorderedProminent按钮文本不显示的问题
这种情况我之前也碰到过——设置了borderedProminent样式和tint后,按钮文本在预览里突然消失,其实核心原因很直观:.borderedProminent样式的按钮,默认文本颜色会和你设置的tint颜色自动形成对比,但当tint设为.primary时,在部分配色模式(比如浅色模式)下,文本颜色会和按钮背景色完全重合,导致视觉上看起来像是消失了。
针对你的代码,这里有两个简单有效的修复方案:
方案1:显式指定文本颜色
直接给Text添加.foregroundColor()修饰符,选一个和tint背景对比强烈的颜色,比如白色:
Button { } label: { Text("qmshahzad@yahoo.com") .foregroundColor(.white) }.buttonStyle(.borderedProminent) .tint(.primary)
方案2:利用系统自动对比色(更适配多模式)
如果你不想手动固定颜色,可以让系统帮你处理文本与背景的对比,比如使用Color(UIColor.systemBackground)或者直接调用系统的对比色API:
Button { } label: { Text("qmshahzad@yahoo.com") .foregroundColor(.init(uiColor: .label)) }.buttonStyle(.borderedProminent) .tint(.mint)
另外也可以检查下Xcode预览的外观模式(顶部预览栏的「Appearance」选项),切换浅色/深色模式看看是不是只有某一种模式下出现文本消失的情况。
内容的提问来源于stack exchange,提问作者M.Shahzad Qamar
相关产品推荐
相关产品推荐

