SwiftUI设置.symbolRenderingMode(.palette)出现成员不存在报错
报错原因
- 核心原因是API版本适配问题:
symbolRenderingMode(_:)修饰符、.palette枚举值、多参数的foregroundStyle(_:_:)都是iOS 15、macOS 12、watchOS 8、tvOS 15及以上系统才推出的SwiftUI API,如果你当前项目的最低部署版本低于上述版本,编译器无法识别对应API,就会抛出这两个错误。 - 次要可能原因是Xcode版本过低:Xcode 13及以上版本才内置支持上述新API,低于该版本的Xcode也会识别不到相关符号。
解决办法
方案1:提升项目最低部署版本
将项目的Deployment Target调整到iOS 15+(对应其他平台同理),即可直接编译通过。
方案2:添加版本判断兼容低系统
如果需要支持更低版本的系统,需要用@available判断包裹对应代码,同时补充低版本降级实现:
Button(action: { self.currentview = "Form" }) { if #available(iOS 15.0, macOS 12.0, watchOS 8.0, tvOS 15.0, *) { Image(systemName: "note.text.badge.plus") .font(.system(size: 30)) .symbolRenderingMode(.palette) .foregroundStyle(Color.blue, Color.green) } else { // 低版本系统的降级实现示例 Image(systemName: "note.text.badge.plus") .font(.system(size: 30)) .foregroundColor(.blue) } }
内容的提问来源于stack exchange,提问作者Kunal Katiyar
相关产品推荐
相关产品推荐

