Frage

Wie kann ich die Höhe der Heute-Erweiterung meiner App im Benachrichtigungscenter ändern?

Ich habe es mit dem Schnittstellenbauer ausprobiert und mit Code zeigt der Schnittstellenbauer die Ansicht mit Höhe 600 an, weist diese Höhe jedoch nicht auf dem Gerät an.

Es scheint, dass ich es nicht größer als etwa 80 Pixel hinbekomme ...

enter image description here

War es hilfreich?

Lösung

in Ihrem Widget generationstabedagcode (objektiv-c):

generasacodicetagpre.

lässt Ihr Widget eine Höhe von 200 haben.

Beachten Sie, dass die Breite keinen Einfluss auf die Ansicht hat, da Widgets in die genaue Weite des Benachrichtigungszentrums passen müssen, was automagisch behandelt wird.

Wenn Sie auch Änderungen in der Höhe Ihrer Ansicht animieren möchten, können Sie (objektive-c) implementieren können:

generasacodicetagpre.

in Ihrem Ansichtssteuergerät mit UIViewController.m < / p>

Die Antwort war ein bisschen verborgen; Sie mussten in der Dokumentationsseite klicken, um sich schließlich zu finden Dieses fantastische Dokument .


Eine andere Möglichkeit ist die Verwendung von Auto-Layout-Einschränkungen , um die Höhe Ihrer Sicht aufzuschränken.

Andere Tipps

Die Höhe von Widgets wird vom System angepasst.Wenn Sie Ihre Höhe mithilfe von Einschränkungen definiert haben, wird diese bei Bedarf automatisch angepasst.Wenn Sie ein explizites Layout verwenden, können Sie eine neue Höhe anfordern, indem Sie das ändern preferredContentSize Ihres Widgets.

Beachten Sie, dass Sie keine Garantie dafür haben, dass das Benachrichtigungszentrum Ihren Größenwunsch respektiert:Es kann sein, dass es automatisch angepasst wird, es kann sein, dass es angepasst wird, aber nicht genau auf die gewünschte Höhe, oder dass es überhaupt nicht berücksichtigt wird.

Der beste Weg, ein Widget zu entwickeln, besteht darin, Auto-Layout-Einschränkungen zu verwenden, um Ihre Höhenwerte festzulegen. Auf diese Weise passt sich Ihr Widget problemlos an unterschiedliche Höhen an.

Seit iOS 10 beträgt die Höhe der Erweiterung 110 Pixel.Sie sollten eine neue Protokollmethode verwenden widgetActiveDisplayModeDidChange:withMaximumSize: So erweitern Sie die Erweiterungsgröße (Objective-C):

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

    if (activeDisplayMode == NCWidgetDisplayModeExpanded) {
        self.preferredContentSize = CGSizeMake(maxSize.width, 600.0);
    } else if (activeDisplayMode == NCWidgetDisplayModeCompact) {
        self.preferredContentSize = maxSize;
    }
}

Möglicherweise müssen Sie auch anrufen setWidgetLargestAvailableDisplayMode: auf Ihrem Erweiterungskontext in den heutigen View-Controllern viewDidLoad Methode wie diese (Objective-C):

if ([self.extensionContext respondsToSelector:@selector(setWidgetLargestAvailableDisplayMode:)]) { // iOS 10+
    [self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];
} else {
    self.preferredContentSize = CGSizeMake(0, 600.0); // iOS 10-
}

Dieser Thread könnte hilfreich sein https://forums.developer.apple.com/thread/48930

Der beste Weg ist natürlich Autolayout, aber standardmäßig gibt es Margen, die Sie so kontrollieren können

generasacodicetagpre.

Es gibt zwei Möglichkeiten, die heute Erweiterung zu zeigen:

    .
  1. Compact-Modus (Feste Höhe für Widget)
  2. Erweiterungsmodus (variable Höhe für Widget)
  3. Welchen Code, den Sie tun, um die Erweiterungshöhe im Kompaktmodus zu ändern, macht keinen Unterschied.Sie müssen also den Modus von Compact in den Erweiterungsmodus ändern.

    generasacodicetagpre.

    Sie können WWDC für weitere Updates zu App-Erweiterungen beziehen

heute widget standard uiegginets defaugMarginInsets (Uiegiesets) defaultmargininsets= (top= 0, links= 44, unten= 39, rechts= 0)

Sie sollten diese Methode hinzufügen

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top