微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在iOS 14小部件上渲染图像

如何解决在iOS 14小部件上渲染图像

我正在开发iOS 14 Widget扩展程序。

我有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()
    }
}

一个图像始终呈现,但后续的图像却不呈现。

可能是什么问题?

解决方法

构造时间表,您需要为每个条目指定明确的条目日期。该策略参数用于重新创建下一个时间轴。

所以您的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)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。