Расширение Today: Как работать с режимом отображения?

Виджеты теперь включают в себя концепцию режима отображения (представленную NCWidgetDisplayMode), которая позволяет вам описывать объем доступного контента и позволяет пользователям выбирать компактный или расширенный вид.

Как расширить виджет в IOS 10.0? Это не работает, как в IOS 9.

2 ответа

Решение

Хорошо, я нашел правильное решение здесь.

1) Установите режим отображения на NCWidgetDisplayMode.expanded первый в viewDidLoad:

override func viewDidLoad() {
    super.viewDidLoad()
    self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
}

2) Внедрить новый метод протокола:

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
    if (activeDisplayMode == NCWidgetDisplayMode.compact) {
        self.preferredContentSize = maxSize
    }
    else {
        //expanded
        self.preferredContentSize = CGSize(width: maxSize.width, height: 200)
    }
}

И это будет работать как официальные приложения.

Образ

Вот Objective-C один.

- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode
                         withMaximumSize:(CGSize)maxSize
{
    if (activeDisplayMode == NCWidgetDisplayModeCompact) {
        self.preferredContentSize = maxSize;
    }
    else {
        self.preferredContentSize = CGSizeMake(0, 200);
    }
}
Другие вопросы по тегам