小编Mik*_*ikk的帖子

是否可以使用同一图像通过淡入淡出动画更改图像?(斯威夫特用户界面)

根据我的逻辑,对图像进行点击手势时,应该使用淡入淡出动画来更改,但实际结果是图像在没有动画的情况下发生变化。如果重要,请使用 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)

animation image fading swiftui

8
推荐指数
2
解决办法
9000
查看次数

如何检查@EnvironmentObject是否已设置?(斯威夫特用户界面)

我拥有的: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)

crash preview swiftui environmentobject

5
推荐指数
0
解决办法
520
查看次数

标签 统计

swiftui ×2

animation ×1

crash ×1

environmentobject ×1

fading ×1

image ×1

preview ×1