根据我的逻辑,对图像进行点击手势时,应该使用淡入淡出动画来更改,但实际结果是图像在没有动画的情况下发生变化。如果重要,请使用 Xcode 11.3.1、模拟器 13.2.2/13.3 进行测试。
PS图像被命名为“img1”、“img2”、“img3”等。
enum ImageEnum: String {
case img1
case img2
case img3
func next() -> ImageEnum {
switch self {
case .img1: return .img2
case .img2: return .img3
case .img3: return .img1
}
}
}
Run Code Online (Sandbox Code Playgroud)
struct ContentView: View {
@State private var img = ImageEnum.img1
var body: some View {
Image(img.rawValue)
.onTapGesture {
withAnimation {
self.img = self.img.next()
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我拥有的:View 和 ViewModel(作为 View 结构的扩展)。
它们都使用AppState类型的@EnvironmentObject。
问题是我的预览由于以下错误而崩溃:
Fatal error: No ObservableObject of type AppState found。
注释掉loadUserfunc 中的行可以避免崩溃。
struct ProfileView: View {
@EnvironmentObject var appState: AppState
@ObservedObject var viewModel = ViewModel()
...
}
Run Code Online (Sandbox Code Playgroud)
extension ProfileView {
class ViewModel: ObservableObject {
@EnvironmentObject var appState: AppState
@Published var userVM = UserVM(.example)
init() {
loadUser()
}
func loadUser() {
User.WebService.getSelf { user, errorMsg in
DispatchQueue.main.async {
guard let user = user else {
/*self.appState.showingAlert = true
self.appState.alert = Alert(
title: Text("An …Run Code Online (Sandbox Code Playgroud)