NCWidgetDisplayMode在iOS 10中未设置为.expanded

时间:2016-10-23 03:32:05

标签: ios swift3 today-extension ios10-today-widget

我知道以前曾问过这类问题,但没有一个问题可以解决我的问题。

我想将今天的扩展高度设置为可变。

为此,我在相关帖子中提供了以下代码:

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
        }
    }

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

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

1 个答案:

答案 0 :(得分:0)

我明白了。

实际上,当第一次加载窗口小部件时,默认情况下它处于compact模式,因此使用widgetActiveDisplayModeDidChange调用activeDisplayMode作为.compact

加载后,

  1. 当按下显示更多按钮时,调用widgetActiveDisplayModeDidChange activeDisplayMode.expanded

  2. 当按下显示更少按钮时,调用widgetActiveDisplayModeDidChange activeDisplayMode.compact