NCWidgetDisplayMode未设置为。在iOS 10中展开

NCWidgetDisplayMode未设置为。在iOS 10中展开,ios,swift3,today-extension,ios10-today-widget,Ios,Swift3,Today Extension,Ios10 Today Widget,我知道以前有人问过这类问题,但没有一个能解决我的问题 我想将今天的延伸高度设置为可变 为此,我在相关帖子中建议了以下代码: override func viewDidLoad() { super.viewDidLoad() if #available(iOSApplicationExtension 10.0, *) { self.extensionContext?.widgetLargestAvailableDis

我知道以前有人问过这类问题,但没有一个能解决我的问题

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

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

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
中将
widgetlagestavailabledisplaymode
设置为
.expanded
后,当调用协议方法
widgetActiveDisplayModeDidChange
时,它仍然将
activeDisplayMode
设置为
.compact

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

我想出来了

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

装载后

  • 当按下“显示更多”按钮时,
    widgetActiveDisplayModeDidChange
    将以
    activeDisplayMode
    作为
    .expanded
    调用

  • 当按下“显示较少”按钮时,
    widgetActiveDisplayModeDidChange
    将以
    activeDisplayMode
    作为
    .compact
    调用