如何访问结构体中的自定义Color属性并正确为UI控件设置颜色?
问题解决方法
你代码的错误根源是混淆了「从Assets加载颜色资源」和「直接使用已创建的Color实例」两种用法:
- 当你写
Color("xxx")时,SwiftUI会尝试从项目的Assets.xcassets目录中读取名称为xxx的颜色配置,你将属性路径放在引号中时,系统并不会解析为结构体属性,而是会把整个字符串当做资源名去查找,自然会失败。 - 你定义的
sampleGameView.HomeTeamColor本身就已经是Color类型的实例,不需要再套一层Color()构造器,直接传入即可。
正确写法
把报错的行替换为以下代码即可:
.background(sampleGameView.HomeTeamColor)
修正后的完整代码段
Button(action: {}) { VStack { Text(sampleGameView.CurrentPitcherFirst) Text(sampleGameView.CurrentPitcherLast) .fontWeight(.bold) .textCase(.uppercase) } .padding() } .foregroundColor(.white) .frame(width: 170, height: 75) .background(sampleGameView.HomeTeamColor) // 已修正 .cornerRadius(10)
如果按上述写法仍然触发编译错误,请检查你的gameViewState结构体定义中,HomeTeamColor属性的访问权限是否为内部/公开,以及属性名称拼写、大小写是否和定义一致。
内容的提问来源于stack exchange,提问作者Manny M.
相关产品推荐
相关产品推荐

