iOS10 виджет "Показать больше" Ошибка "Показать меньше"
Я реализовал новый виджет для iOS 10 и использовал следующий код для установки высоты:
@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
if activeDisplayMode == NCWidgetDisplayMode.Compact {
self.preferredContentSize = CGSizeMake(0.0, 350.0)
}
else if activeDisplayMode == NCWidgetDisplayMode.Expanded {
self.preferredContentSize = desiredSize
}
}
И это работает нормально, но моя проблема с кнопками "Показать больше" и "Показать меньше". Они не всегда отвечают, и мне очень часто приходится нажимать несколько раз, чтобы вызвать их. Я что-то упустил? Должен ли я добавить больше, чем приведенный выше код для обработки высоты?
3 ответа
У меня была та же проблема, проблема была в том, что я обновил preferredContentSize
даже если виджет был в компактном режиме.
Попробуйте проверить каждое место, где вы обновляете preferredContentSize
и обновлять размер только если если widgetActiveDisplayMode
является NCWidgetDisplayModeExpanded
Свифт 3:
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
if (activeDisplayMode == NCWidgetDisplayMode.compact) {
UIView.animate(withDuration: 0.25, animations: { () -> Void in
self.preferredContentSize = yourFixSize
}, completion: nil)
}
else {
UIView.animate(withDuration: 0.25, animations: { () -> Void in
self.preferredContentSize = yourMaxSize
}, completion: nil)
}
}
Была та же проблема, и я обнаружил, что когда мы нажимаем кнопку "показать больше" "показать меньше", анимация отсутствует. Таким образом, вы можете попробовать добавить блок следующим образом:
- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize {
if (activeDisplayMode == NCWidgetDisplayModeCompact) {
[UIView animateWithDuration:0.25f
animations:^{
self.preferredContentSize = yourFixSize; }];
}
else {
[UIView animateWithDuration:0.25f
animations:^{
self.preferredContentSize = yourMaxSize;
}];
}
}
Я исправляю эту ошибку таким образом.
Надеюсь, полезно