2016-06-23 16 views

risposta

47

Ok, ho trovato la soluzione giusta here.

1) Impostare la modalità di visualizzazione a NCWidgetDisplayMode.expanded prima in viewDidLoad:

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

2) Implementare nuovo metodo di protocollo:

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

e funzionerà come applicazioni ufficiali.

Image

+2

sto cercando questo modo che io possa impostare il widget per l'altezza del mio punto di vista tavolo, ma si tratta sempre fino alla widgetActiveDisplayModeDidChange come Compatto anche se ho impostato l'extensionContext a espanso. Qualche idea sul perché la modalità di visualizzazione non viene impostata? – fakataha

+0

funziona perfettamente :) Lo apprezzo molto –

7

Ecco uno Objective-C.

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