Проблема в виджетах в ландшафтном режиме

У меня есть эта раздражающая проблема с виджетами, которая урезает содержание моего представления в ландшафтном режиме. Я поместил размер контента статически, но он не работает. 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
        }
}
Другие вопросы по тегам