2016-09-25 4 views
2

ich das neue Widget für iOS umgesetzt haben 10, und ich habe den folgenden Code verwendet dafür die Höhe einzustellen:iOS10 Widget „Mehr anzeigen“ „Weniger anzeigen“ Bug

@available(iOSApplicationExtension 10.0, *) 
func widgetActiveDisplayModeDidChange(activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) { 
    if activeDisplayMode == NCWidgetDisplayMode.Compact { 
     self.preferredContentSize = CGSizeMake(0.0, 350.0) 
    } 
    else if activeDisplayMode == NCWidgetDisplayMode.Expanded { 
     self.preferredContentSize = desiredSize 
    } 

} 

und es ist adaequat , aber mein Problem ist mit der "Zeige mehr" und "Show less" Tasten. Sie reagieren nicht immer und ich muss oft mehrmals klicken, um sie auszulösen. Ich vermisse etwas? Muss ich mehr als den obigen Code hinzufügen, um die Höhe zu bewältigen?

+0

Die Werte Sie setzen nicht gültig sind und Macht verursacht ein Problem. Sie sollten die Variable 'maxSize' verwenden, wenn der Anzeigemodus '.Compact' ist und sicherstellen, dass die gewählte Höhe nicht größer ist. Außerdem kann eine Breite von 0 Fehler verursachen, verwenden Sie die Breite Ihrer Ansicht. – EmilioPelaez

Antwort

1

hatten dasselbe Problem, und ich fand, dass, wenn wir auf die Schaltfläche "mehr anzeigen" "weniger anzeigen" klicken, gibt es keine Animation. So können Sie versuchen, einen Block wie folgt hinzuzufügen:

- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize { 

    if (activeDisplayMode == NCWidgetDisplayModeCompact) { 
     [UIView animateWithDuration:0.25f 
         animations:^{ 
          self.preferredContentSize = yourFixSize;       }]; 
    } 
    else { 

      [UIView animateWithDuration:0.25f 
          animations:^{ 
           self.preferredContentSize = yourMaxSize; 
}]; 
     } 
} 

Ich behebe diesen Fehler auf diese Weise.

Hoffnung nützlich

2

ich hatte das gleiche Problem, das Problem war, dass ich die preferredContentSize sogar aktualisiert hatte, wenn das Widget in dem Kompakt-Modus ist.

versuchen, jeden Ort zu überprüfen, wo Sie die preferredContentSize aktualisieren und die Größe nur aktualisieren, wenn die wenn widgetActiveDisplayMode ist NCWidgetDisplayModeExpanded

+0

Ich aktualisiere die Größe meines Widgets, indem ich eine Beschränkung für die Höhe einer Stapelansicht verwende, anstatt mich auf die bevorzugteContentSize zu verlassen. Ich bekomme immer noch die Fehlermeldung, obwohl ich diese Eigenschaft in meiner Implementierung überhaupt nicht berühre. Ich erhalte auch den Fehler "Fehler beim Erben von CoreMedia-Berechtigungen von ... (null)" vor dem "Kein aktiver Animationsblock!" Error. – valeCocoa

3

Swift 3:

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) { 
    if (activeDisplayMode == NCWidgetDisplayMode.compact) { 
     UIView.animate(withDuration: 0.25, animations: {() -> Void in 
      self.preferredContentSize = yourFixSize 
     }, completion: nil) 

    } 
    else { 
     UIView.animate(withDuration: 0.25, animations: {() -> Void in 
     self.preferredContentSize = yourMaxSize 
     }, completion: nil) 
    } 
} 
Verwandte Themen