watchOS 2 Die Kraft der Animationen

Das neue Betriebssystem für die Apple Watch, watchOS 2, wurde vor einigen Wochen auf der WWDC 2015 vorgestellt. Es bringt viele Verbesserungen, vor allem für Entwickler, die eine Apple Watch-App erstellen möchten. Dies sind die Dinge, die für Entwickler am wichtigsten sind:

  • WatchKit-Apps laufen jetzt nativ auf der Uhr. Dies bringt die dringend benötigte Geschwindigkeitsverbesserung und führt zu einer besseren Benutzererfahrung.
  • Das neue Konnektivität beobachten Das Framework ermöglicht alle Arten von Kommunikation und Datenaustausch zwischen der übergeordneten iOS-App und der watchOS-App.
  • watchOS 2-Apps haben Zugriff auf Hardwaredaten wie Daten vom Bewegungssensor, Audioaufzeichnung und sogar auf Herzfrequenzdaten.
  • watchOS 2 führte auch Animationen ein. Bei watchOS 1 bestand die einzige Möglichkeit, eine Animation auszuführen, darin, eine Serie von Bildern zu generieren und diese dann zu durchlaufen. watchOS 2 bringt echte Animationen auf die Apple Watch. Sie können die Benutzeroberfläche animieren, indem Sie die Layout-Eigenschaften innerhalb eines Animationsblocks ändern. Hier kommt dieses Tutorial ins Spiel.

1. Warum sollte man sich für Animationen interessieren??

Bevor wir zu den Details kommen, möchte ich eine Minute damit verbringen, den Zweck von Animationen in Apple Watch-Apps zu besprechen.

Der offensichtliche Grund ist, dass sie die Benutzeroberfläche angenehmer machen, wenn sie entsprechend verwendet wird. Und wenn es um Apple Watch geht, ist das groß ob. Da die meisten App-Interaktionen nur wenige Sekunden dauern, möchten Sie die Animationen wirklich nicht übertreiben.

Der zweite und meiner Meinung nach wichtigere Grund ist, dass sie benutzerdefinierte Navigationshierarchien in Apple Watch-Apps zulassen. Angenommen, Sie müssen einen Bildschirm anzeigen, den der Benutzer nur durch eine bestimmte Aktion verlassen kann. Normalerweise haben Apple Watch-Apps immer eine Schaltfläche zum Abbrechen in der oberen linken Ecke, wenn ein modaler Schnittstellencontroller angezeigt wird. Mit Animationen und cleveren Layout-Manipulationen können Sie eine eigene Routine "Present View Controller" erstellen, die den Inhalt Ihrer App im Vollbildmodus anzeigt und durch diese bestimmte Aktion abbricht. Das ist eines der Dinge, die Sie in diesem Tutorial lernen werden.

2. Voraussetzungen

Bevor Sie in dieses Tutorial eintauchen, sollten Sie über grundlegende Kenntnisse der Funktionsweise des Layout-Systems von WatchKit verfügen. Selbst wenn Sie ein erfahrener iOS-Entwickler sind, unterscheidet sich das gruppenbasierte Layout von WatchKit erheblich von dem, das Sie unter iOS gewohnt sind. Sie müssen auf eine ganz andere Art und Weise über das Layout nachdenken. Wenn Sie sich erst einmal daran gewöhnt haben, können Sie die meisten Layouts ohne großen Aufwand erstellen.

Wenn Sie das Layout von WatchKit noch nicht kennen, gibt es ein tolles Tutorial zu Tuts + von meinem Freund Patrick Balestra: Das Verständnis des WatchKit Layout-Systems. Anhand einer Beispiel-App erklärt er alles, was Sie wissen müssen, um sich auf den neuesten Stand zu bringen.

Es gibt auch viele WWDC-Sitzungen, die dieses Thema berühren. Die Session, die ich am besten empfehle und die WatchKit-Animationen abdeckt, heißt Layout- und Animationstechniken für WatchKit.

3. Grundlagen

Das Prinzip der Animationen in watchOS 2 ist einfach: Sie können eine oder mehrere der animierbaren Eigenschaften innerhalb eines Animationsblocks festlegen. Das folgende Beispiel zeigt, wie das funktioniert.

[self animateWithDuration: 0.5 Animationen: ^ [self.circleGroup setHorizontalAlignment: WKInterfaceObjectHorizontalAlignmentRight]; ];

Diese Methode bewirkt das Kreisgruppe rechts ausgerichtet sein, mit einer Animation von 0,5 Sekunden Dauer. Wie Sie sehen können, rufen wir an animateWithDuration: Animationen: auf selbst, Das ist ein Beispiel von WKInterfaceController. Dies unterscheidet sich von iOS, wo die Animationsmethoden Klassenmethoden sind UIView.

Die folgende Liste zeigt, welche Eigenschaften animierbar sind:

  • Opazität
  • Ausrichtung
  • Breite und Höhe
  • Hintergrundfarbe
  • Farbe und Tönungsfarbe

Beachten Sie, dass es auf watchOS 2 immer noch nicht möglich ist, Benutzeroberflächenelemente zur Laufzeit zu erstellen. Da Sie sie jedoch ausblenden oder ihren Alpha-Wert im Storyboard auf 0 setzen können, sollte dies kein so großes Problem sein.

Das ist es. Mit Ihrem Wissen über das WatchKit-Layoutsystem können Sie jetzt mit native Animationen auf watchOS arbeiten. Beginnen wir mit der Erstellung einer Beispiel-App, damit ich Ihnen einige Beispiele zeigen kann, wie dies alles zusammenpasst.

4. Grundlegende Animationen

Wir werden eine einfache watchOS 2-App erstellen, in der einige dieser Animationskonzepte vorgestellt werden. Es wird keinesfalls versucht, einen vollständigen Überblick über alle möglichen Dinge zu geben. Stattdessen zeigt es die Grundidee, die es Ihnen hoffentlich ermöglicht, Lösungen für das zu finden, was Sie brauchen.

Schritt 1: Erstellen Sie das Projekt

Zum Zeitpunkt des Schreibens befindet sich Xcode 7 noch in der Beta-Phase. Um eine watchOS 2-App zu erstellen, müssen Sie Xcode 7 verwenden. Das ist es, was ich verwenden werde.

  • Starten Sie Xcode und wählen Sie Datei> Neu> Projekt… .
  • Wählen iOS-Anwendung mit Einzelansicht-Anwendung Vorlage und klicken Sie auf Nächster.
  • Wenn gefragt wird Produktname, eingeben WatchAnimations. Sie können das Häkchen entfernen Komponententests einschließenund UI-Tests einschließen da wir diese für dieses Tutorial nicht brauchen werden.
  • Klicken Nächster, Wählen Sie einen Ort zum Speichern des Projekts und klicken Sie auf Erstellen.

Schritt 2: Fügen Sie das WatchKit-Ziel hinzu

  • Wählen Sie in Xcode Datei> Neu> Ziel… .
  • Wählen Sie aus der Liste der Vorlagen WatchKit App von dem watchOS> Anwendung Abschnitt und klicken Sie auf Nächster weitermachen.
  • Zum Produktname, Sie können alles auswählen, was Sie möchten. Ich habe meine benannt WatchApp.
  • Deaktivieren Sie das Kontrollkästchen Benachrichtigungsszene einschließen, weil wir es nicht brauchen werden. Wenn Sie auf klicken Fertig, Ihr WatchKit-Ziel wird erstellt.
  • Wenn Sie aufgefordert werden, das WatchApp-Schema zu aktivieren, klicken Sie auf aktivieren Sie. Beachten Sie, dass Sie das Schema jederzeit oben links im Xcode-Fenster ändern können.

Schritt 3: Erstellen Sie die Benutzeroberfläche

Öffnen Interface.storyboard in dem WatchApp Gruppe wie unten gezeigt.


Fügen Sie der Benutzeroberfläche eine Gruppe hinzu, indem Sie sie aus dem Ordner ziehen Objektbibliothek zur Rechten. In dem Attribute-Inspektor ändern Sie rechts das Layout in Vertikale und stellen Sie die Höhe auf Relativ zu Container.


Fügen Sie der gerade hinzugefügten Gruppe eine zweite Gruppe hinzu. In dem Attribute-Inspektor, Setzen Sie die vertikale Position auf Unterseite.

Fügen Sie der zweiten Gruppe vier Schaltflächen hinzu. Legen Sie für jede Schaltfläche fest Größe zu Relativ zu Container mit einem Wert von 0,25. Stellen Sie die Titel der Tasten auf ←, →, ↑ und ↓. Nach diesem Schritt sollte die Benutzeroberfläche folgendermaßen aussehen:


Um den ersten Teil der Benutzeroberfläche abzuschließen, fügen Sie der Hauptgruppe eine weitere Gruppe hinzu und konfigurieren Sie sie wie folgt:

  • Setzen Sie zur besseren Übersicht den Namen auf Kreis indem man seinen Namen in der Dokument Gliederung auf der Linken.
  • Setzen Sie die Farbe auf Rot.
  • Stellen Sie den Radius auf 20 Punkte ein.
  • Stellen Sie Größe, Breite und Höhe auf 40 Punkte ein.
  • Der folgende Screenshot zeigt, wie der Kreis konfiguriert werden sollte.


    Schritt 4: Animationen hinzufügen

    In dem Projektnavigator, erweitere die WatchApp-Erweiterung gruppieren und auswählen InterfaceController.m. Ersetzen Sie die Implementierung von InterfaceController Klasse mit folgendem:

    #import "InterfaceController.h" @interface InterfaceController () @property (nicht atomar, schwach) IBOutlet WKInterfaceGroup * circleGroup; @end @implementation InterfaceController // Schaltflächen für die Kreisrichtung - (IBAction) leftButtonPressed [self animateWithDuration: 0.5 Animationen: ^ [self.circleGroup setHorizontalAlignment: WKInterfaceObjectHorizontalAlignmentLeft]; ];  - (IBAction) rightButtonPressed [self animateWithDuration: 0.5 Animationen: ^ [self.circleGroup setHorizontalAlignment: WKInterfaceObjectHorizontalAlignmentRight]; ];  - (IBAction) upButtonPressed [self animateWithDuration: 0.5 Animationen: ^ [self.circleGroup setVerticalAlignment: WKInterfaceObjectVerticalAlignmentTop]; ];  - (IBAction) downButtonPressed [self animateWithDuration: 0.5 Animationen: ^ [self.circleGroup setVerticalAlignment: WKInterfaceObjectVerticalAlignmentBottom]; ];  @Ende

    Durch diese Aktionen wird der rote Kreis in eine bestimmte Richtung verschoben. Und wie Sie sehen, erreichen wir dies, indem Sie die vertikale und / oder horizontale Ausrichtung in einem Animationsblock einstellen.

    Schritt 5: Schließen Sie die Steckdosen an

    Öffnen Interface.storyboard und verbinden Sie die Steckdosen wie unten gezeigt.


    Das sollte es tun. Führen Sie das Projekt aus. Wenn Sie die obigen Schritte ausgeführt haben, sollten Sie in der Lage sein, den roten Kreis mithilfe der Pfeiltasten auf dem Bildschirm zu verschieben.

    5. Komplexere Animationen

    Im zweiten Teil dieses Tutorials erstellen wir eine Push-Animation. Da die meisten Schritte ähnlich sind, werde ich mich diesmal etwas schneller bewegen.

    Schritt 1: Erstellen Sie eine Animation

    Öffnen InterfaceController.m und erstellen Sie eine neue Steckdose, firstScreenGroup, vom Typ WKInterfaceGroup in der Klassenerweiterung der InterfaceController Klasse.

    @interface InterfaceController () @ property (nicht atomar, schwach) IBOutlet WKInterfaceGroup * circleGroup; @ property (nichtatomisch, schwach) IBOutlet WKInterfaceGroup * firstScreenGroup; @Ende

    Als nächstes implementieren Sie die folgenden Aktionen in der InterfaceController Klasse.

    - (IBAction) pushButtonPressed [self animateWithDuration: 0.1 Animationen: ^ [self.firstScreenGroup setAlpha: 0]; ]; [self animateWithDuration: 0.3 Animationen: ^ [self.firstScreenGroup setWidth: 0]; ];  - (IBAction) popButtonPressed [self animateWithDuration: 0.3 Animationen: ^ [self.firstScreenGroup setRelativeWidth: 1 withAdjustment: 0]; ]; dispatch_after (dispatch_time (DISPATCH_TIME_NOW, (int64_t) (0,2 * NSEC_PER_SEC)), dispatch_get_main_queue (), ^ [self animateWithDuration: 0,1 Animationen: ^ [self.firstScreenGroup setAlpha: 1];];; 

    Im pushButtonPressed, Wir verkleinern die erste Bildschirmgruppe (wir erstellen sie im nächsten Schritt) und in popButtonPressed Wir erweitern diese Gruppe erneut. Wir animieren auch das Alpha der ersten Bildschirmgruppe, um die Animation etwas ansprechender zu gestalten.

    Schritt 2: Erweitern Sie die Benutzeroberfläche

    Öffnen Interface.storyboard und fügen Sie der Benutzeroberfläche eine neue Gruppe hinzu. Setzen Sie die Gruppe, die bereits dort war, in die Gruppe Kreis und die Gruppe mit Schaltflächen in dieser neuen Gruppe. Set seine Layout zu Horizontal und benennen Sie die enthaltene Gruppe in um Erster Bildschirm. Dies wird später nützlich sein. Das Ergebnis sollte so aussehen:


    Fügen Sie als Nächstes eine zweite Gruppe hinzu, die sich auf derselben Ebene wie die Gruppe befindet Erster Bildschirm Gruppe. Set seine Layout zu Vertikale. Fügen Sie der Gruppe ein Bild und eine Schaltfläche hinzu. Sie können buchstäblich jedes Bild hinzufügen. Stellen Sie einfach sicher, dass Sie etwas dort einfügen, da die Animation sonst etwas trocken aussieht. Stellen Sie den Titel der Schaltfläche auf "< Pop". Connect the button to the popButtonPressed Aktion, die wir zuvor erstellt haben. Die Benutzeroberfläche sollte jetzt so aussehen:


    Fügen Sie der Schaltfläche eine Schaltfläche hinzu Erster Bildschirm Gruppe. Stellen Sie den Titel auf "Push>" und die vertikale Position auf Unterseite. Verbinden Sie den Button mit dem pushButtonPressed Aktion. Die Benutzeroberfläche sollte jetzt so aussehen:


    Es gibt eine Sache, die wir tun müssen, um das zu verbinden firstScreenGroup Ausgang zu der von uns genannten Gruppe Erster Bildschirm.

    Schritt 3: Erstellen und ausführen

    Wenn Sie die App erstellen und ausführen, sollten Sie in der Lage sein, den zweiten Bildschirm anzuzeigen, indem Sie auf die Schaltfläche mit dem Titel tippen "Push>" unten. Sie können den zweiten Bildschirm schließen, indem Sie auf die Schaltfläche mit Titel tippen. "< Pop". It should look like this:

    Fazit

    In diesem Tutorial haben wir uns native Animationen auf watchOS 2 angesehen. Ich hoffe, Sie haben einen Eindruck davon bekommen, was Sie mit Animationen auf watchOS erreichen können. Wenn Sie Fragen haben, können Sie einen Kommentar posten oder mich auf Twitter kontaktieren.