Сегодня высота компактного режима Extension в 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.
Ответы
Ответ 1
В соответствии с Что нового в сеансе Cocoa Touch от WWDC 2016 (около отметки 44:00):
Теперь мы имеем размер, контролируемый пользователем. Компактный режим, фиксированная высота, а расширенный режим - переменная высота.
Итак, кажется, что установка prefferedContentSize
для NCWidgetDisplayModeCompact
полностью игнорируется (фиксированный размер составляет 110pts).
Ответ 2
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 Widget]()
Ответ 3
В SWIFT 3:
Следующее свойство вашего TodayViewController вернет максимальный размер для компактного режима:
private var maxSizeForCompactMode: CGFloat {
return extensionContext?.widgetMaximumSize(for: .compact).height ?? 0
}
Ответ 4
установите prefferedContentSize
в viewDidAppear
или после этого. Я предполагаю, что виджет изменит размер перед представлением. Ширина виджетов не является SCREEN_WIDTH из-за разрыва между краем экрана iPhone.