Виджеты iOS 14: как создать разные макеты для каждого размера виджетов?

Я хочу создать разные макеты для каждого размера виджета (то есть маленький, средний, большой). Как я могу разветвлять свой код в соответствии с размером виджета?

1 ответ

Решение

В WidgetFamily(Документация Apple) перечисление как частьWidgetKitпозволит вам переключаться между различными размерами в вашем обзоре и соответствующим образом настраивать. Установите это как@Environment переменная и включите доступные кейсы:

  • .systemSmall
  • .systemMedium
  • .systemLarge
struct WidgetView : View {
   @Environment(\.widgetFamily) var family

    @ViewBuilder
    var body: some View {
        
        switch family {
        case .systemSmall:
            Text("Small")
        case .systemMedium:
            Text("Medium")
        case .systemLarge:
            Text("Large")
        default:
            Text("Some other WidgetFamily in the future.")
        }

    }
}

В дополнение к принятому ответу в ваших методах класса Provider (getTimeline, getSnapshot и placeholder) вы получаете объект контекста, который имеет член семейства var.

семейство может быть одного из трех размеров виджетов: .systemSmall,.systemMedium и.systemLarge.

Официальная документация Apple.

Другие вопросы по тегам