将图片添加到小部件

时间:2021-06-04 14:42:52

标签: swift swiftui widget

我正在尝试编写一个可以显示图像的简单小部件。此图像位于应用程序的资产中。到目前为止,这是我的代码。大部分是从标准模板复制过来的:

import WidgetKit
import SwiftUI

struct Provider: TimelineProvider {
    func placeholder(in context: Context) -> SimpleEntry {
        SimpleEntry(date: Date())
    }

    func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) {
        let entry = SimpleEntry(date: Date())
        completion(entry)
    }

    func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
        var entries: [SimpleEntry] = []

        // Generate a timeline consisting of five entries an hour apart, starting from the current date.
        let currentDate = Date()
        for hourOffset in 0 ..< 5 {
            let entryDate = Calendar.current.date(byAdding: .hour, value: hourOffset, to: currentDate)!
            let entry = SimpleEntry(date: entryDate)
            entries.append(entry)
        }

        let timeline = Timeline(entries: entries, policy: .atEnd)
        completion(timeline)
    }
}

struct SimpleEntry: TimelineEntry {
    let date: Date
}

struct contactCodeEntryView : View {
    var entry: Provider.Entry

    var body: some View {
        VStack {
            Image("picture")
                .resizable()
                .scaledToFit()
        }
    }
}

@main
struct contactCode: Widget {
    let kind: String = "contactCode"

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: Provider()) { entry in
            contactCodeEntryView(entry: entry)
        }
        .configurationDisplayName("My Widget")
        .description("This is an example widget.")
    }
}

struct contactCode_Previews: PreviewProvider {
    static var previews: some View {
        contactCodeEntryView(entry: SimpleEntry(date: Date()))
            .previewContext(WidgetPreviewContext(family: .systemSmall))
    }
}

我知道小部件可以与 SwiftUI 一起使用,但是当我尝试预览/运行此代码时,我只得到一个空白小部件。当我尝试在其他 SwiftUI 项目中运行来自 contactCodeEntryView(略有修改)的代码时,它可以工作。为什么?有人可以帮我吗?

0 个答案:

没有答案
相关问题