SwiftUI 3.0调用Color(.secondary)报错CGColor无secondary成员如何解决
报错原因
你写的Color(.secondary)语法中,括号内的枚举值会默认匹配UIColor/CGColor的成员,但CGColor并没有预设secondary属性,所以才会抛出类型错误。
之前你用.foregroundColor(.secondary)可以正常运行,是因为这里的参数是SwiftUI原生的Color类型,该类型本身自带secondary静态属性,属于正确调用。
原生解决方案
方案1:直接使用SwiftUI原生Color静态属性
直接调用Color.secondary即可,不需要额外嵌套UIColor/CGColor初始化,修改后代码如下:
ZStack { Color.secondary .ignoresSafeArea(.all, edges: .all) .opacity(0.3) }
该属性会自动适配当前系统明暗模式,输出对应场景下的次要系统色,完全符合你的需求。
方案2:使用系统原生材质实现更规范的模糊效果
如果你要的是毛玻璃类的模糊背景,更推荐用SwiftUI 3.0原生支持的系统材质,不需要手动调整色值和透明度,系统会自动根据当前主题渲染适配的半透模糊效果,性能和视觉规范都更优,示例代码如下:
ZStack { // 可选材质类型:ultraThinMaterial、thinMaterial、regularMaterial、thickMaterial、ultraThickMaterial .ultraThinMaterial .ignoresSafeArea() }
内容的提问来源于stack exchange,提问作者Arturo
相关产品推荐
相关产品推荐

