Сегодня расширение Compact Mode в высоту iOS 10

Я изо всех сил пытаюсь изменить высоту моего виджета iOS 10 в компактном режиме.

Все, что у меня есть, - это пустой виджет, внутри которого нет представлений. Тем не менее, независимо от того, что я установил для компактной высоты, кажется, это игнорируется.

Вот мой код:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    [self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

}

- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize{
    if (activeDisplayMode == NCWidgetDisplayModeCompact) {
        self.preferredContentSize = CGSizeMake(0, 50);
    }
    else{
        self.preferredContentSize = CGSizeMake(0, 200);
    }
}

Может ли это быть проблемой с бета-версией программного обеспечения? Я использую Xcode 8 beta и iOS 10 beta 7.

4 ответа

Решение

Согласно сеансу " Что нового в Cocoa Touch" на WWDC 2016 (около отметки 44:00):

Теперь у нас есть размер, контролируемый пользователем. Компактный режим с фиксированной высотой и расширенный режим с переменной высотой.

Итак, кажется, что установка preferredContentSize за NCWidgetDisplayModeCompact полностью игнорируется (фиксированный размер составляет 110 пунктов).

В SWIFT 3:

Следующее свойство вашего TodayViewController вернет максимальный размер для компактного режима:

private var maxSizeForCompactMode: CGFloat {
    return extensionContext?.widgetMaximumSize(for: .compact).height ?? 0
}

1) Установите режим отображения на NCWidgetDisplayModeExpanded в viewDidLoad

override func viewDidLoad() {
    super.viewDidLoad()
    self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
}

2) Реализовать этот метод протокола

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize){
    if (activeDisplayMode == NCWidgetDisplayMode.compact) {
        self.preferredContentSize = maxSize;
    }
    else {
        self.preferredContentSize = CGSize(width: 0, height: 200);
    }
}

iOS 10 Виджет

Задавать prefferedContentSize в viewDidAppear или после того Я думаю, что виджет изменится, прежде чем появится вид. Ширина виджета НЕ SCREEN_WIDTH из-за разрыва между краями экрана iPhone.

Другие вопросы по тегам