iOS 10 Today Extension 不会进入扩展模式,保持紧凑

iOS 10 Today Extension not going into Expanded mode, stays in compact

我正在编写 Today Extension,它在我的 iOS 9 设备上运行正常。

在 iOS 10,我读过很多帖子说我们需要为扩展设置扩展模式以扩展到超过 110 高度,但是当我遵循所有关于如何做的答案时这一点,我的小部件一直处于紧凑模式。

这就是我正在使用的

    @available(iOS 10.0, *)
    @available(iOSApplicationExtension 10.0, *)
    func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
        if activeDisplayMode == .expanded {
            self.preferredContentSize = CGSize(width: maxSize.width, height: 400)
        } else if activeDisplayMode == .compact {
            self.preferredContentSize = CGSize(width: maxSize.width, height: 110)
        }
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        if #available(iOS 10.0, *) {
            self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
        }
    }

我将值设置为扩展,然后它进入协议,在那里,它进入紧凑的 else 语句,而不是扩展。

我试过在 viewDidAppear 和 viewWillAppear 中设置模式。

我的代码中没有其他地方设置 preferedContentSize

那里有十几个答案说这应该行得通,我这辈子都不知道自己做错了什么?

我还需要做些什么吗?

这是已接受答案的示例 -

更新:我刚看到 "Show More" 按钮...也许我误解了事情,是否可以扩展这个开始?我是否被迫按下“显示更多”按钮?这或许可以解释为什么它不起作用?

当您实施 widgetActiveDisplayModeDidChange 时,您正在做的是允许 用户 展开小部件。显示更多文本出现在右上角,用户可以点击它切换到扩展模式。 Apple 的天气应用程序小部件就是一个标准示例。