まるまる
まるまる

Reputation: 23

How to resize the height of today Extension?

How to resize the height of widget in iOS 11?

I cannot resize the height of today Extension.

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


}

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

Upvotes: 0

Views: 762

Answers (2)

まるまる
まるまる

Reputation: 23

I write to the didReceiveMemoryWarning but the correct is to write to the viewDidLoad

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

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

Upvotes: 1

Milan Nosáľ
Milan Nosáľ

Reputation: 19737

A bit of a guess, but try this (using maxSize.width instead of 0 width):

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {

    if activeDisplayMode == NCWidgetDisplayMode.compact {
        //compact
        self.preferredContentSize = maxSize
    } else {
        //extended
        self.preferredContentSize = CGSize(width: maxSize.width, height: 200)
    }
}

Also, don't forget to add this line to enable .expanded mode (e.g., to viewDidLoad):

self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded

Upvotes: 3

Related Questions