NCWidgetDisplayMode 未设置为 .expanded iOS 10

NCWidgetDisplayMode not set to .expanded in iOS 10

我知道以前有人问过这种类型的问题,但是 none 能够解决我的问题。

我想将今天的延伸高度设置为可变的。

为此,我按照相关帖子中的建议包含了以下代码:

override func viewDidLoad()
    {
        super.viewDidLoad()

        if #available(iOSApplicationExtension 10.0, *)
        {
            self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
        }
        else
        {
            // Fallback on earlier versions
        }
    }

@available(iOSApplicationExtension 10.0, *)
    func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize)
    {
        if activeDisplayMode == .expanded
        {
            preferredContentSize = CGSize(width: 0.0, height: 200.0)
        }
        else
        {
            preferredContentSize = maxSize
        }
    }

我面临的问题是,即使在 viewDidLoad 中将 widgetLargestAvailableDisplayMode 设置为 .expanded 后,当调用协议方法 widgetActiveDisplayModeDidChange 时,它仍然给我activeDisplayMode 作为 .compact.

还需要做什么才能使小部件在 iOS 10 中正常工作?

我明白了。

实际上,当第一次加载小部件时,它默认处于 compact 模式,因此 widgetActiveDisplayModeDidChange 被调用 activeDisplayMode.compact

加载后,

  1. Show More 按钮被按下时,widgetActiveDisplayModeDidChange 被调用 activeDisplayMode 作为 .expanded.

  2. 当按下 Show Less 按钮时,widgetActiveDisplayModeDidChange 被调用 activeDisplayMode 作为 .compact.