TimelineProvider 中的小部件大小和@Environment 值不匹配
Mismatch between widget size and @Environment value in TimelineProvider
大家早上好,
我正在使用 API 开发一个小部件,它根据小部件的大小发送不同大小的数组(小:3 条新闻,中:6 条新闻,大:9 条新闻)。
我的印象是 @Environment(\.widgetFamily) var family
和 TimelineProvider 的时间轴函数(我在这里调用 API)之间有问题。
事实上,在这个函数中,环境变量总是等于 systemMedium 大小,尽管小部件的“真实”大小。
你身边是否也有同样的问题?
这是 Apple 的已知错误吗?
我该如何解决这个错误?
感谢您的帮助:]
在没有看到您的代码的情况下,我最好的猜测是您没有访问传递到 TimelineProvider
的 TimelineProviderContext
的 family
属性。
您的 TimelineProvider
应该类似于:
struct MyProvider: TimelineProvider {
func snapshot(with context: Context, completion: @escaping (Entry) -> ()) {
fetchNewsArticles(for: context.family) { articles in
// ...
completion(...)
}
}
}
func fetchNewsArticles(for widgetFamily: WidgetFamily, completion: @escaping ... )
{
switch family {
case .systemSmall:
// ...
}
大家早上好,
我正在使用 API 开发一个小部件,它根据小部件的大小发送不同大小的数组(小:3 条新闻,中:6 条新闻,大:9 条新闻)。
我的印象是 @Environment(\.widgetFamily) var family
和 TimelineProvider 的时间轴函数(我在这里调用 API)之间有问题。
事实上,在这个函数中,环境变量总是等于 systemMedium 大小,尽管小部件的“真实”大小。
你身边是否也有同样的问题? 这是 Apple 的已知错误吗? 我该如何解决这个错误?
感谢您的帮助:]
在没有看到您的代码的情况下,我最好的猜测是您没有访问传递到 TimelineProvider
的 TimelineProviderContext
的 family
属性。
您的 TimelineProvider
应该类似于:
struct MyProvider: TimelineProvider {
func snapshot(with context: Context, completion: @escaping (Entry) -> ()) {
fetchNewsArticles(for: context.family) { articles in
// ...
completion(...)
}
}
}
func fetchNewsArticles(for widgetFamily: WidgetFamily, completion: @escaping ... )
{
switch family {
case .systemSmall:
// ...
}