Renderizar imagens em widgets iOS 14
Sep 27 2020
Estou desenvolvendo uma extensão iOS 14 Widget.
Tenho 3 imagens para mostrar em loop e criando uma linha do tempo para mostrar essas imagens.
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()
}
}
A primeira imagem sempre é renderizada, mas as imagens subsequentes não.
Qual pode ser o problema?
Respostas
2 Asperi Sep 27 2020 at 08:45
Construindo a linha do tempo, você precisa especificar a data de entrada explícita para cada entrada. O parâmetro de política é para recriar a próxima linha do tempo.
Então, você getTimelinedeve ser parecido com
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)
}
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?