【发布时间】:2020-07-06 11:23:20
【问题描述】:
我正在尝试在两个视图之间创建“卡片翻转”动画:
- 视图“A”是
CardView内的LazyVGrid - 视图“B”是自定义模式叠加视图
LazyVGrid 和视图“B”在一个 ZStack 中
具体来说,ContentView 的组织方式如下:
var body: some View {
ZStack {
NavigationView {
ScrollView {
LazyVGrid(columns: columns, spacing: 10) {
ForEach(model.events, id: \.self) { event in
SmallCardView(event: event)
.opacity(!showModal || event != modifiableEvent ? 1.0 : 0.0)
}
}
}
}
.brightness(self.showModal ? -0.1 : 0)
.blur(radius: self.showModal ? 16 : 0)
if self.showModal {
AddEventView(
showModal: $showModal,
existingEvent: modifiableEvent,
)
.opacity(showModal ? 1.0 : 0.0)
.padding(.horizontal, 16)
}
}
}
我遇到了this SO 帖子,答案似乎很有希望,但是答案没有考虑到其中一个视图是否在堆栈/网格中,对我来说就是这种情况。所以,我的问题是,如果其中一个视图确实嵌入在堆栈或网格中,我该如何调整链接解决方案以使其按预期工作。
编辑:另外需要注意的是Views的大小和位置不同
我尝试将.modifier(FlipEffect(flipped: $showModal, angle: animate3d ? 180 : 0, axis: (x: 0, y: 1))) 添加到ZStack 和SmallCardView,但是都没有产生预期的结果。
谢谢!
编辑:为了清楚起见,我想在这两个视图之间以卡片翻转样式制作动画:
【问题讨论】:
标签: ios swift animation view swiftui