Высота расширения виджета на сегодня - iOS10

Высота для режима просмотра виджетов Today не может быть установлена ​​для компактного режима. Независимо от того, какое значение я установил. Он устанавливает высоту виджета в значение по умолчанию. Расширенный режим работает отлично, и значение правильно установлено и отражено в виджете. Я уже добавил эту строку в мой метод viewDidLoad().

self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded

Вот код Значение maxSize также нельзя изменить как его константу.

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {

        //self.preferredContentSize = (activeDisplayMode == .compact) ? maxSize : CGSize(width: maxSize.width, height: 300)

        if activeDisplayMode == NCWidgetDisplayMode.compact
        {
             self.preferredContentSize = CGSize(width: maxSize.width, height: 300)
        }
        else
        {
            self.preferredContentSize = CGSize(width: maxSize.width, height: 560)
        }
}

2 ответа

Решение

Высота виджета в iOS 10 составляет ровно 110 в компактном режиме. Его можно установить на любую высоту, которую вы хотите в расширенном режиме, но в компактном режиме это всегда будет 110, и это не может быть перезаписано.

Попробуйте установить self.preferredContentSize в методе viewDidLoad. Вот полный код:

Свифт 3

override func viewDidLoad() {

    super.viewDidLoad()

    self.preferredContentSize = CGSize(width:self.view.frame.size.width, height:210)

    if #available(iOSApplicationExtension 10.0, *) {
        self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
    }
}


 @available(iOS 10.0, *)
    @available(iOSApplicationExtension 10.0, *)
    func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
        if activeDisplayMode == .expanded {
            self.preferredContentSize = CGSize(width: self.view.frame.size.width, height: CGFloat(3)*self.tableView.rowHeight)
        }else if activeDisplayMode == .compact{
            self.preferredContentSize = CGSize(width: maxSize.width, height: 110)
        }
    }

пожалуйста, используйте ваш рост для вашего приложения. Надеюсь исправит вашу проблему.

Чтобы получить максимальную высоту активного режима отображения виджетов, сделайте это в вашем UIViewController

let context = self.extensionContext
if let context = context{
    let height = context.widgetMaximumSize(for: context.widgetActiveDisplayMode).height
}

Чтобы получить максимальную высоту развернутого и компактного объекта независимо от текущего режима отображения, сделайте следующее:

var context = self.extensionContext
if let context = context{
    let compactHeight = context.widgetMaximumSize(for: .compact).height
    let expandedHeight = context.widgetMaximumSize(for: .expanded).height
}
Другие вопросы по тегам