iOS Today Widget 显示更紧凑的模式

iOS Today Widget show more compact mode

我试图显示今天的小部件,带有显示更多的按钮,但是在 iOS 10 中,我只找到了显示按钮的信息 More/less 如果我把NCWidgetDisplayMode 展开。但是,今天的小部件显示展开,我希望它是第一次压缩。

如果我将 NCWidgetDisplayMode 设置为“紧凑”,“显示更多”按钮就会消失!

我有一些应用程序的小部件行为是我想要的:第一次设置小部件时,它以紧凑模式显示,并带有显示更多按钮。

如何存档此结果?我不喜欢任何解释如何做的东西。

您需要在viewDidLoad中设置widgetLargestAvailableDisplayMode

   override func viewDidLoad()
    {
        super.viewDidLoad()
        self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
    }

现在实现 NCWidgetProviding 协议委托方法:

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize)
{
    if activeDisplayMode == .expanded
    {
        preferredContentSize = CGSize(width: 0.0, height: 200.0) //Size of the widget you want to show in expanded mode
    }
    else
    {
        preferredContentSize = maxSize
    }
}

有关iOS8/iOS9/iOS10中小部件如何工作的更多信息,您可以参考:https://github.com/pgpt10/Today-Widget