Today Extension: 如何使用显示模式?

Today Extension: How to work with display mode?

Widgets now include the concept of display mode (represented by NCWidgetDisplayMode), which lets you describe how much content is available and allows users to choose a compact or expanded view.

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

那样工作

好的,我找到了正确的解决方案 here

1)先在viewDidLoad中设置显示模式为NCWidgetDisplayMode.expanded:

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

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

它将作为官方应用程序运行。

Image

这是一个Objective-C。

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