Ответ 1
Высота виджета в iOS 10 составляет ровно 110 в компактном режиме. Он может быть настроен на любую высоту, которую вы хотите в расширенном режиме, но в компактном режиме он всегда будет 110, и его нельзя перезаписать.
Высота режима просмотра виджетов 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)
}
}
Высота виджета в 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
}