#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
.
После загрузки,
-
При нажатии кнопки Показать больше
widgetActiveDisplayModeDidChange
вызывается с помощьюactiveDisplayMode
as.expanded
. -
При нажатии кнопки Показать меньше
widgetActiveDisplayModeDidChange
вызывается сactiveDisplayMode
как.compact
.