2

我已经为 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
    }

}

它工作正常,但我的问题是“显示更多”“显示更少”按钮。他们并不总是回应,我经常不得不多次点击才能触发他们。我错过了什么?我是否必须添加比上述代码更多的代码来处理高度?

4

3 回答 3

4

我有同样的问题,问题是我已经更新了preferredContentSize即使小部件处于紧凑模式。

尝试检查您更新的每个地方,preferredContentSize并且仅当 ifwidgetActiveDisplayMode为时才更新大小NCWidgetDisplayModeExpanded

于 2016-10-25T08:34:44.307 回答
4

斯威夫特 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)
    }
}
于 2017-02-02T12:02:31.527 回答
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;
}];
        }
}

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

希望有用

于 2016-10-10T03:44:04.047 回答