【问题标题】:Render Images on iOS 14 Widgets在 iOS 14 小部件上渲染图像
【发布时间】:2020-09-27 08:05:11
【问题描述】:

我正在开发 iOS 14 小部件扩展。

我有 3 张图片要循环显示并创建一个时间轴来显示这些图片。

func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
    var entries: [ImageEntry] = []
    let currentDate = Date()
    
    for i in 1 ..< 4 {
        let imageNumber = String(i)
        let currentImage = "image_" + imageNumber
        let entry = ImageEntry(date: currentDate,image: currentImage)
        entries.append(entry)
    }

    let nextUpdateDate = Calendar.current.date(byAdding: .minute, value: 5, to: currentDate)!
    let timeline = Timeline(entries: entries, policy: .after(nextUpdateDate))

    completion(timeline)
}


struct WidgetModuleEntryView : View {
var entry: Provider.Entry

var body: some View {
    Image(entry.image)
        .resizable()
        .scaledToFill()
    }
}

始终呈现第一张图像,但不呈现后续图像。

可能是什么问题?

【问题讨论】:

    标签: swift swiftui widget ios14 widgetkit


    【解决方案1】:

    构建时间线需要为每个条目指定明确的条目日期。政策参数用于重新创建下一个时间线。

    所以你的getTimeline 应该是这样的

    func getTimeline(in context: Context, completion: @escaping (Timeline<Entry>) -> ()) {
        var entries: [ImageEntry] = []
        let currentDate = Date()
    
        for i in 1 ..< 4 {
            let imageNumber = String(i)
            let currentImage = "image_" + imageNumber
            let entryDate = Calendar.current.date(byAdding: .minute, value: (i-1)*5, to: currentDate)!
            let entry = ImageEntry(date: entryDate, image: currentImage)
            entries.append(entry)
        }
    
        let timeline = Timeline(entries: entries, policy: .atEnd)
        completion(timeline)
    }
    

    【讨论】:

    • 无内容渲染。问题可能与EntryView 有关吗? struct WidgetModuleEntryView : View { var entry: Provider.Entry var body: some View { Image(entry.image) .resizable() .scaledToFill() }}
    • 我错过了您的范围从 1 开始,因此第一个图像将在 5 分钟后显示。请参阅已更正。
    • 仍然没有内容渲染。
    • 我在本地复制了这个场景——一切正常(只是使用 .second 来加快迭代)。 Xcode 12GM / iOS 14。
    • 图像未正确添加到项目中。它现在正在工作。感谢您的宝贵时间。
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2021-03-05
    • 2021-02-25
    • 2020-10-18
    • 1970-01-01
    • 2021-01-09
    • 2021-03-14
    • 2021-01-10
    相关资源
    最近更新 更多