Не установлен режим ncwidgetdisplay .расширен в iOS 10

#ios #swift3 #today-extension #ios10-today-widget

#iOS #swift3 #сегодня-расширение #ios10-сегодня-виджет

Вопрос:

Я знаю, что вопросы такого типа задавались раньше, но ни один из них не способен решить мою проблему.

Я хочу установить сегодняшнюю высоту расширения переменной.

Для этого я включил приведенный ниже код, как предлагалось в соответствующих сообщениях:

 override func viewDidLoad()
    {
        super.viewDidLoad()

        if #available(iOSApplicationExtension 10.0, *)
        {
            self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
        }
        else
        {
            // Fallback on earlier versions
        }
    }

@available(iOSApplicationExtension 10.0, *)
    func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize)
    {
        if activeDisplayMode == .expanded
        {
            preferredContentSize = CGSize(width: 0.0, height: 200.0)
        }
        else
        {
            preferredContentSize = maxSize
        }
    }
  

Проблема, с которой я сталкиваюсь, заключается в том, что даже после установки widgetLargestAvailableDisplayMode значения .expanded в viewDidLoad , когда вызывается метод протокола widgetActiveDisplayModeDidChange , он по-прежнему выдает мне activeDisplayMode as .compact .

Что еще нужно сделать, чтобы виджет работал правильно в iOS 10?

Ответ №1:

Я понял это.

На самом деле, когда виджет загружается в первый раз, он по умолчанию находится в compact режиме и поэтому widgetActiveDisplayModeDidChange вызывается с activeDisplayMode as .compact .

После загрузки,

  1. При нажатии кнопки Показать больше widgetActiveDisplayModeDidChange вызывается с помощью activeDisplayMode as .expanded .

  2. При нажатии кнопки Показать меньше widgetActiveDisplayModeDidChange вызывается с activeDisplayMode как .compact .