iOS10小部件“显示更多”“显示更少”错误

时间:2016-09-25 03:57:49

标签: ios swift ios10 ios10-today-widget

我已经为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 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,问题是即使小部件处于紧凑模式,我也更新了preferredContentSize

尝试检查更新preferredContentSize的每个位置,并仅在if widgetActiveDisplayModeNCWidgetDisplayModeExpanded

时更新尺寸

答案 1 :(得分:3)

斯威夫特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)
    }
}

答案 2 :(得分:1)

有同样的问题,我发现当我们点击"显示更多" “显示较少”按钮,没有动画。所以你可以尝试添加这样的块:

- (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;
}];
        }
}

我以这种方式修复了这个错误。

希望有用