在iOS 10中,NCWidgetDisplayMode未设置为.expanded



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

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

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

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

最新更新