Today Extension: How to work with display mode?

不羁岁月 提交于 2019-11-30 07:27:39

问题


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.

How to expand widget in ios 10.0? It doesn't work as in ios 9.


回答1:


Ok, i found right solution here.

1) Set the display mode to NCWidgetDisplayMode.expanded first in viewDidLoad:

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

2) Implement new protocol method:

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

And it will work as official apps.

Image




回答2:


Here is a Objective-C one.

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


来源:https://stackoverflow.com/questions/37995859/today-extension-how-to-work-with-display-mode

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!