SwiftUI中为系统及资源图片应用原生ShapeStyle的可行性问题
在SwiftUI中为系统图片和资源图片应用原生ShapeStyle的可行性分析
在SwiftUI里尝试给系统图片和本地资源图片应用原生ShapeStyle时,会遇到兼容性问题:系统图片默认采用.template渲染模式,当使用.clear作为样式来还原图片原生外观时,会直接导致系统图片消失,因此这种方案不可行。
问题复现代码
import SwiftUI struct SwiftUIView8: View { @State private var hasStyle: Bool = true var body: some View { VStack { /// 本地资源图片 Image("envelope.square") .applyStyle(hasStyle) /// 系统图片 Image(systemName: "book") .applyStyle(hasStyle) .font(.title.weight(.bold)) Toggle("应用样式", isOn: $hasStyle) } .padding() } } private extension Image { func applyStyle(_ hasStyle: Bool) -> some View { self.renderingMode(hasStyle ? .template : .original) .foregroundStyle(hasStyle ? .green : .clear /* 还原原生样式 */) } } #Preview { SwiftUIView8() }
内容的提问来源于stack exchange,提问作者Amirca
相关产品推荐
相关产品推荐

