今天扩展:如何使用显示模式?

Vla*_*001 9 xcode expand swift today-extension ios10

窗口小部件现在包括显示模式的概念(由NCWidgetDisplayMode表示),它允许您描述可用的内容量,并允许用户选择紧凑或扩展视图.

如何在ios 10.0中扩展小部件?它不像ios 9那样有效.

Vla*_*001 48

好吧,我找到合适的解决方案在这里.

1)将显示模式设置为NCWidgetDisplayMode.expanded第一位viewDidLoad:

override func viewDidLoad() {
    super.viewDidLoad()
    self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
}
Run Code Online (Sandbox Code Playgroud)

2)实施新的协议方法:

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
    if (activeDisplayMode == NCWidgetDisplayMode.compact) {
        self.preferredContentSize = maxSize
    }
    else {
        //expanded
        self.preferredContentSize = CGSize(width: maxSize.width, height: 200)
    }
}
Run Code Online (Sandbox Code Playgroud)

它将作为官方应用程序.

图片

  • 我正在尝试这样,以便我可以将窗口小部件设置为我的表视图的高度,但它总是以.compact的形式传递给widgetActiveDisplayModeDidChange,即使我将extensionContext设置为展开.任何想法为什么没有设置显示模式? (2认同)

小智 7

这是Objective-C的一个.

- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode
                         withMaximumSize:(CGSize)maxSize
{
    if (activeDisplayMode == NCWidgetDisplayModeCompact) {
        self.preferredContentSize = maxSize;
    }
    else {
        self.preferredContentSize = CGSizeMake(0, 200);
    }
}
Run Code Online (Sandbox Code Playgroud)