我试图使用@ViewBuilder
将两个视图作为一个View的子项传递。
我需要知道哪个是第一个视图,哪个是第二个视图,因为我想根据某些状态显示其中之一。
我已经以非泛型的方式使其工作,也就是说,我明确给出了子视图的类型。
struct FlippableView<Content: View>: View {
@State private var flipped = false
@State private var degrees = 0.0
var frontCard: FeedItem
var backCard: FeedItem
@inlinable public init(@ViewBuilder content: () -> Content) {
var t = content() as! TupleView<(FeedItem, FeedItem)>
self.frontCard = t.value.0
self.backCard = t.value.1
}
var body: some View {
return Group() {
if self.degrees < 90 {
self.frontCard
} else {
self.backCard
.rotation3DEffect(Angle(degrees: 180), axis: (x: CGFloat(0), y: CGFloat(10), z: CGFloat(0)))
}
}
}
我该如何使这个更加通用,通过消除我的FeedItem类型。我想让这两个视图成为两种不同的视图类型。
FlippableView
。 你能否提供一个小例子展示如何调用它?谢谢! - titusmagnus