Несоответствие между размером виджета и значением @Environment в TimelineProvider - PullRequest
0 голосов
/ 04 августа 2020

Доброе утро всем,

Я разрабатываю виджет, используя API, который отправляет массивы разных размеров в зависимости от размера виджета (маленький: 3 новости, средний: 6 новостей, большой: 9 news).

У меня сложилось впечатление, что существует проблема между @Environment(\.widgetFamily) var family и функцией временной шкалы (где я вызываю API) TimelineProvider.

Действительно, в этой функции переменная окружения всегда равен размеру systemMedium, несмотря на «настоящий» размер виджета.

У вас тоже есть такая же проблема? Это известная ошибка от Apple? Как я могу решить эту проблему?

Спасибо за вашу помощь:]

1 Ответ

0 голосов
/ 04 августа 2020

Не видя вашего кода, я могу предположить, что вы не получаете доступ к свойству family объекта TimelineProviderContext, переданного в TimelineProvider.

Ваш 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:
         // ...
}

Apple Docs - TimelineProvider

Apple Docs - TimelineProviderContext

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...