8

更新了今天的 iOS 10 扩展实现委托方法:

-(void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize
{
    if (activeDisplayMode == NCWidgetDisplayModeCompact){
        [UIView animateWithDuration:0.25 animations:^{
            self.preferredContentSize = maxSize;
            [self.view layoutIfNeeded];
        }];
    }
    else if (activeDisplayMode == NCWidgetDisplayModeExpanded){
        newHeight = [self getNewWidgetHeight];
        [UIView animateWithDuration:0.25 animations:^{
            self.preferredContentSize = CGSizeMake(0, newHeight);
            [self.view layoutIfNeeded];
        }];
    }
}

一切正常。但是,如果我将小部件保持在紧凑模式(显示更多选项可用)并且如果我重新运行/重新打开小部件屏幕并且如果我点击“显示更多”按钮,即使触发了委托方法也不会发生任何事情。我应该按 2 次显示更多/更少,直到小部件开始扩展。我也收到此错误:No active animation block!

4

2 回答 2

14

我发现了这个问题。

self.preferredContentSize即使小部件处于紧凑模式,我也已经编辑过。每次更新preferredContentSizeifwidgetActiveDisplayMode时都检查一下NCWidgetDisplayModeExpanded

于 2016-10-25T08:32:31.940 回答
2

我遇到了同样的问题,然后查看情节提要,我意识到“用户首选显式大小”设置已启用。

在此处输入图像描述

禁用该选项对我有用。

于 2017-04-26T16:01:37.587 回答