Search code examples
xcodeswiftexpandtoday-extensionios10

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.

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


Solution

  • 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