所以我认为在应用程序的主视图和设置视图之间转换会很容易。应用程序代码如下所示:
struct PointsMasterII: App {
@StateObject var settings = AppSettings()
var body: some Scene {
WindowGroup {
if settings.displaySettings {
SettingsView()
.environmentObject(settings)
.transition(.slide)
} else {
ContentView()
.environmentObject(settings)
.transition(.slide)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是非常基本的,在每个视图中我都定义了以下按钮:
@EnvironmentObject private var settings: AppSettings
var body: some View {
// ...
Button {
withAnimation {
settings.displaySettings.toggle()
}
} label: {
Image(systemName: "gearshape.2").font(.title)
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序并点击按钮时,两个视图按预期切换,但没有任何动画。我已经尝试了很多方法,但似乎没有任何效果,并且我在互联网上找到的所有教程都说这应该“有效”。
知道缺少什么吗?
没有动画修改器,因此没有动画,尝试将其包装在Group或某个容器中(但是,从设计角度来看,将所有这些移入ContentView并单独替换MainView并SettingsView在那里更合适)
var body: some Scene {
WindowGroup {
Group { // or VStack
if settings.displaySettings {
SettingsView()
.environmentObject(settings)
.transition(.slide)
} else {
ContentView()
.environmentObject(settings)
.transition(.slide)
}
}
.animation(.default, value: settings.displaySettings)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1810 次 |
| 最近记录: |