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)
}
}
}