Swiftui 如何使.resizeable()成为有条件的?

Swiftui 如何使.resizeable()成为有条件的?,swiftui,state,Swiftui,State,我有一个状态@state var showImage=false,我希望我的图像修改器.resizeable()仅在false上启用 struct URLImageView: View { @State var showImage = false var body: some View { if urlImageModel.image != nil { Image(Image("Foo.png"))

我有一个状态
@state var showImage=false
,我希望我的图像修改器
.resizeable()
仅在false上启用

struct URLImageView: View {
    @State var showImage = false

    var body: some View {
        if urlImageModel.image != nil {
                Image(Image("Foo.png"))
                .resizable() /shrug
                .aspectRatio(contentMode: .fill)
                .frame(width: showImage ? 350 : 150, height: showImage ? 350 : 150)
                .clipShape(RoundedRectangle(cornerRadius: 30, style: .continuous))
                .onTapGesture{
                    self.showImage.toggle()
                }
        }
    }
}

您可以通过在
图像
上创建一个
扩展
,有条件地应用
可调整大小

extension Image {
    @ViewBuilder
    func conditionalResizable(_ resizable: Bool) -> some View {
        if resizable {
            self.resizable()
        } else {
            self
        }
    }
}
然后替换:

.resizable()
与:

@State在任何情况下都必须是私有的。
.conditionalResizable(!showImage)
extension Image {
    func isResizable(_ condition: Bool) -> Image {
        switch condition {
        case true:
            return
                self
                .resizable()
        case false:
            return
                self
        }
    }
}

struct SomeView: View {
    var body: some View {
        VStack {
            Image(systemName: "mustache")
                .isResizable(true)
            Image(systemName: "mustache.fill")
                .isResizable(false)
        }
    }
}