如何:使用条件自定义背景视图作为背景修饰符?

How to: Use conditional custom background views for background modifier?

通常,如何在修饰符中使用三元运算符进行条件更改是很直接的。但是,当我尝试在背景修饰符的两个自定义视图之间切换时,出现此错误。如果您例如,情况并非如此。直接指定颜色作为备用视图。

错误:'? 中的结果值:' 表达式有不匹配的类型 'BackgroundView1' 和 'BackgroundView2'

import SwiftUI

struct TestView: View {

@State var buttonPressed = false

var body: some View {

    Button(action: {self.buttonPressed.toggle()}) {

        Image(systemName: "circle.fill")
            .background(self.buttonPressed ? BackgroundView1() : BackgroundView2()) // Error
//                .background(buttonPressed ? Color.red : Color.green)
    }

}
}

struct BackgroundView1: View {

var body: some View {

    Color.red

    }
}

struct BackgroundView2: View {

var body: some View {

    Color.green

}
}

struct TestView_Previews: PreviewProvider {
static var previews: some View {
    TestView()
}
}

视图必须是一种类型,这是可能的解决方案

Image(systemName: "circle.fill")
    .background(Group {
       if self.buttonPressed { BackgroundView1() }
         else { BackgroundView2() }
    }) 

或者,如果视图很简单(否则可能是性能问题),

    Image(systemName: "circle.fill")
        .background(self.buttonPressed ? AnyView(BackgroundView1()) : AnyView(BackgroundView2()))