在视图中的一组主体中显示或隐藏视图时,我试图用 SwiftUI 找出动画。我有这个代码:
var body: some View {
Group {
if isIntroShown {
EAIntroViewContentView()
.transition(AnyTransition.opacity.animation(.easeInOut(duration: 1.0)))
}
if mainhomeMode == .mylists {
MyLists()
.onReceive(publisher) { (payload) in
self.toggleMainView()
}
} else {
CarsHome()
.onReceive(publisher) { (payload) in
self.toggleMainView()
}
}
}.onReceive(publisherIntro) { (payload) in
self.onShowIntroButton()
}
}
Run Code Online (Sandbox Code Playgroud)
当 hidden 时EAIntroView,过渡动画正常工作,但块弹出并mainhomeMode没有动画向上移动到窗口顶部。如何隐藏和显示介绍视图使隐藏/显示事件平滑?
好吧,经过一些测试和@Boris 的回复,我知道我需要做什么。
代码应该是这样的:
func onShowIntroButton() {
withAnimation(.easeInOut(duration: 0.5)) {
isIntroShown.toggle()
}
}
var body: some View {
VStack{
if isIntroShown {
EAIntroViewContentView()
.transition(AnyTransition.opacity.animation(.linear(duration: 0.5)))
}
Spacer()
if mainhomeMode == .mylists {
MyLists()
.onReceive(publisher) { (payload) in
self.toggleMainView()
}
} else {
CarsHome()
.onReceive(publisher) { (payload) in
self.toggleMainView()
}
}
}.onReceive(publisherIntro) { (payload) in
self.onShowIntroButton()
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用通知切换视图。所以动画必须从toggle()函数中调用。
在这种情况下,当 Intro 视图在函数中切换时,我必须调用动画onShowIntroButton()。
该VStak和Spacer()也让动画smoother.Hope它有助于其他开发者。
Bor*_*is 6
你尝试过这样的事情吗?
withAnimation {
self.toggleMainView()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3919 次 |
| 最近记录: |