2016-06-23 32 views

Antwort

47

Ok, ich fand richtige Lösung here.

1) Stellen Sie den Anzeigemodus zu NCWidgetDisplayMode.expanded zuerst in viewDidLoad:

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

2) Implementieren neuer Protokollverfahren:

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

Und es wird als offizielle Anwendungen arbeiten.

Image

+2

Ich versuche dies so, dass ich das Widget in die Höhe meiner Tabellenansicht einstellen kann, aber es kommt immer bis zum widgetActiveDisplayModeDidChange als .compact obwohl ich die Extension auf erweitert. Irgendwelche Ideen, warum der Anzeigemodus nicht eingestellt ist? – fakataha

+0

es funktioniert perfekt :) Ich schätze das wirklich –

7

Hier ist ein ein Objective-C.

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