【发布时间】:2020-07-03 14:51:10
【问题描述】:
我正在尝试为 SwiftUI 视图的偏移设置动画,同时淡出并删除该视图的子视图。我遇到的问题是 SwiftUI 执行偏移和淡出动画,但没有组合它们。
我想要实现的动画整个SubView的位置,同时淡出字幕文本,使字幕文本在淡入或淡出时垂直移动。我可以通过动画Text 的不透明度而不是删除它来实现这一点,但这意味着文本仍将占用“布局空间”。
有没有办法用if showSubtitle 语句来实现这个动画?
以下代码和 GIF 演示了该问题:
struct ContentView: View {
@State private var showSubtitle = true
var body: some View {
SubView(showSubtitle: showSubtitle)
.animation(.default)
.offset(y: showSubtitle ? 100 : 0)
.onTapGesture {
self.showSubtitle.toggle()
}
}
}
struct SubView: View {
let showSubtitle: Bool
var body: some View {
VStack {
Text("Header")
if showSubtitle {
Text("Subtitle")
}
}
}
}
【问题讨论】:
-
您是否尝试过将
showSubtitle定义为Binding而不是常量?
标签: ios swift animation swiftui