首页 > 解决方案 > 在 iOS 14 小部件中实现图像过渡动画

问题描述

我对使用 iOS 14 Widget 扩展实现基本的图像过渡动画很感兴趣。

我的目标是:

问题:

更多细节在这里:

我有一堂课叫AnimatingImage

struct AnimatingImage: View {
    let images: [Image]

    @ObservedObject private var counter = Counter(interval: 0.10)
        
    var body: some View {
        images[counter.value % images.count]
    }
}

private class Counter: ObservableObject {
    private var timer: Timer?

    @Published var value: Int = 0
    
    init(interval: Double) {
        timer = Timer.scheduledTimer(withTimeInterval: interval, repeats: true) { _ in self.value += 1 }
        print ("has timer")
    }
}

它在我的 Widget 主目录中使用View

struct SleepCheckerWidgetView : View {
    let entry: LastSleepEntry

    var body: some View {

        let images = [Image("moon_1"),
                      Image("moon_5"),
                      Image("moon_10"),
                      Image("moon_15"),
                      Image("moon_20")
        ]
        
        
        VStack(alignment: .leading, spacing: 4) {
            Text("4:44")
                .font(.system(.title2))
                .foregroundColor(.white)
                .bold()
            AnimatingImage(images: images)
                            .scaledToFit()
            
        }.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center)
            .padding()
    }

    static func format(date: Date) -> String {
        let formatter = DateFormatter()
        formatter.dateFormat = "MM-dd-yyyy HH:mm"
        return formatter.string(from: date)
    }
}

标签: iosswiftuiwidgetios14

解决方案


推荐阅读