Проблема в виджетах в ландшафтном режиме
У меня есть эта раздражающая проблема с виджетами, которая урезает содержание моего представления в ландшафтном режиме. Я поместил размер контента статически, но он не работает. Apple ограничивает виджет определенной высотой в альбомной ориентации? В руководстве по интерфейсу Apple сказано, что это не рекомендуется, но выполнимо ли это?
Редактировать:
2 ответа
Существует ограничение по высоте для сегодняшних виджетов на iOS. Максимальная высота (размер экрана) - (высота пользовательского интерфейса центра уведомлений). Что бы ни оставалось после того, как центр уведомлений рисует, его интерфейс остается для виджетов. В ландшафте все будет иначе, чем в портрете.
К сожалению, это ограничение не задокументировано, и нет способа найти его во время выполнения. Если вы запросите больший размер, вы получите что-то меньшее, чем вы запрашивали, но нет способа спросить, каково ограничение. [И если кто-то из Apple читает это, пожалуйста, смотрите rdar: // 18408718, "Сегодня расширения имеют недокументированные, трудно обнаружить ограничения по размеру"]
В некоторых случаях центр уведомлений устанавливает более низкий предел высоты. Для меня это похоже на ошибку, но пока нет пути к этому.
С Swift 3 и IOS10: добавьте этот метод в свой контроллер виджетов, и вы получите максимальный размер
@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize){
if (activeDisplayMode == NCWidgetDisplayMode.compact) {
self.preferredContentSize = maxSize;
// hide or show what you want
messageLabel.isHidden = false
textLabel.isHidden = true
}
else {
self.preferredContentSize = CGSize(width: 0, height: (maxSize.height - 100) // personnaly I remove 100 to make it easier fo the user to see all the widget
messageLabel.isHidden = true
textLabel.isHidden = false
}
}