watchOS 2 Kraften til animasjoner

Det nye operativsystemet for Apple Watch, watchOS 2, ble introdusert for noen uker siden på WWDC 2015. Det gir mange forbedringer, for det meste for utviklere som ønsker å lage en Apple Watch-app. Dette er de tingene jeg synes å være viktigst for utviklere:

  • WatchKit apps kjører nå nativt på klokken. Dette gir den mye trengte forbedringen i fart, noe som resulterer i en bedre brukeropplevelse.
  • Den nye Se tilkobling rammeverket muliggjør all slags kommunikasjon og datadeling mellom den overordnede iOS-appen og watchOS-appen.
  • watchOS 2-apper har tilgang til maskinvaredata, for eksempel data fra bevegelsessensoren, lydopptak, og de kan til og med få tilgang til hjertefrekvensdata.
  • watchOS 2 introduserte også animasjoner. På watchOS 1 var det eneste alternativet for å utføre en animasjon å generere en serie bilder og deretter iterere gjennom dem. watchOS 2 bringer ekte animasjoner til Apple Watch. Du kan animere brukergrensesnittet ved å endre layoutegenskaper i en animasjonsblokk. Det er her denne opplæringen kommer inn.

1. Hvorfor bry deg om animasjoner?

Før vi kommer til muttere og bolter, vil jeg gjerne bruke et minutt å snakke om formålet med animasjoner på Apple Watch-apper.

Den åpenbare grunnen er at de gjør brukergrensesnittet morsommere hvis det brukes riktig. Og når det gjelder Apple Watch, det er en stor hvis. Siden de fleste app-interaksjoner bare varer i noen sekunder, vil du virkelig ikke gå over bord med animasjoner.

Den andre, og jeg tror mer viktig grunn, er at de tillater tilpassede navigasjonshierarkier i Apple Watch-apper. La oss anta at du må presentere en skjerm som brukeren kun kan gå ved å ta en bestemt handling. Normalt har Apple Watch-apper alltid en avbryt-knapp øverst til venstre når en modal-grensesnittkontroller er presentert. Med animasjoner og smart layoutmanipulering kan du lage din egen "present view controller" -rutine som viser appens innhold i fullskjerm, og avviser det ved den spesifikke handlingen. Det er en av tingene du lærer i denne opplæringen.

2. Forutsetninger

Før du dykker inn i denne opplæringen, bør du ha grunnleggende kunnskap om hvordan layoutsystemet fungerer på WatchKit. Selv om du er en erfaren iOS-utvikler, er gruppebasert layout i WatchKit svært forskjellig enn det du pleier å bruke på iOS. Du må tenke på oppsettet på en helt annen måte. Men når du blir vant til det, vil du kunne lage de fleste oppsett uten mye innsats.

Hvis du er ny på layout på WatchKit, er det en flott opplæring på Tuts + av min venn Patrick Balestra, Forstå WatchKit Layout-systemet. Ved hjelp av et eksempel-app forklarer han alt du trenger å vite for å få fart.

Det er også mange WWDC økter som berører dette emnet. Økten som jeg anbefaler mest, og som dekker WatchKit-animasjoner, er dette tittelen Layout and Animation Techniques for WatchKit.

3. Grunnleggende

Prinsippet om animasjoner på watchOS 2 er enkelt, du setter en eller flere av de animerte egenskapene inne i en animasjonsblokk. Følgende eksempel illustrerer hvordan dette virker.

[self animatedWithDuration: 0.5 animasjoner: ^ [self.circleGroup setHorizontalAlignment: WKInterfaceObjectHorizontalAlignmentRight]; ];

Denne metoden forårsaker circleGroup å bli justert til høyre, med en animasjon med en varighet på 0,5 sekunder. Som du kan se, ringer vi animateWithDuration: animasjoner: på selv-, som er en forekomst av WKInterfaceController. Dette er forskjellig fra iOS der animasjonsmetodene er klassemetoder på UIView.

Underlisten viser hvilke egenskaper som kan animeres:

  • opasitet
  • Justering
  • bredde og høyde
  • bakgrunnsfarge
  • farger og farger

Husk at det fortsatt ikke er mulig på watchOS 2 å opprette brukergrensesnittelementer ved kjøring. Men siden du kan gjemme dem eller sette deres alfa til 0 i storyboardet, bør dette ikke være så stort av et problem.

Det er det. Bevæpnet med din kunnskap om WatchKit-layoutsystemet, er du nå klar til å begynne å jobbe med innfødte animasjoner på watchOS. La oss begynne med å lage en prøveapp, så jeg kan vise deg et par eksempler på hvordan alt dette passer sammen.

4. Grunnleggende animasjoner

Vi skal lage en enkel watchOS 2 app som vil introdusere et par av disse animasjonskonseptene. Det er på ingen måte å prøve å gi en fullstendig oversikt over alle de mulighetene som er mulige. I stedet viser den grunnleggende ideen, som forhåpentligvis gir deg mulighet til å finne løsninger på hva du trenger.

Trinn 1: Opprett prosjektet

På tidspunktet for skriving er Xcode 7 fortsatt i beta. For å opprette en watchOS 2 app må du bruke Xcode 7 så det er det jeg skal bruke.

  • Start Xcode og velg Fil> Nytt> Prosjekt ... .
  • Velge iOS-applikasjon med Enkeltvisningsprogram mal og klikk neste.
  • Når du blir bedt om det Produktnavn, Tast inn WatchAnimations. Du kan fjerne merket Inkluder Unit Testsog Inkluder UI-tester som vi ikke trenger de for denne opplæringen.
  • Klikk neste, velg et sted for å lagre prosjektet, og klikk Skape.

Trinn 2: Legg til WatchKit Target

  • I Xcode velger du Fil> Ny> Mål ... .
  • Fra listen over maler velger du WatchKit App fra watchOS> Program delen og klikk neste å fortsette.
  • Til Produktnavn, Du kan velge alt du liker. Jeg har kalt min WatchApp.
  • Fjern merkingen Inkluder varslingsscene, fordi vi ikke trenger det. Når du klikker Bli ferdig, WatchKit-målet ditt vil bli opprettet.
  • Når du blir bedt om å aktivere WatchApp-skjemaet, klikker du Aktiver. Bare vær oppmerksom på at du kan endre ordningen når som helst øverst til venstre i Xcode-vinduet.

Trinn 3: Opprett brukergrensesnittet

Åpen Interface.storyboardWatchApp gruppe som vist nedenfor.


Legg til en gruppe i grensesnittet ved å dra det fra Objektbibliotek til høyre. I Attributtsinspektør til høyre, endre oppsettet til vertikal og sett høyden til I forhold til container.


Legg til en annen gruppe i gruppen vi nettopp har lagt til. I Attributtsinspektør, sett sin vertikale posisjon til Bunn.

Legg til fire knapper til den andre gruppen. For hver knapp, sett Størrelse til I forhold til container med en verdi på 0.25. Sett knappene på knappene til ←, →, ↑ og ↓. Etter dette trinnet bør brukergrensesnittet se slik ut:


For å fullføre den første delen av brukergrensesnittet, legg til en gruppe til hovedgruppen og konfigurer den som følger:

  • For klarhet, setter navn til Sirkel ved å endre navnet i Dokumentoversikt til venstre.
  • Sett fargen til rød.
  • Still radiusen til 20 poeng.
  • Still størrelsen, bredden og høyden til 40 poeng.
  • Følgende skjermbilde viser deg hvordan sirkelen skal konfigureres.


    Trinn 4: Legg til animasjoner

    I Prosjektnavigator, utvide WatchApp Extension gruppe og velg InterfaceController.m. Erstatt implementeringen av InterfaceController klasse med følgende:

    #import "InterfaceController.h" @interface InterfaceController () @property (ikkeatomisk, svak) IBOutlet WKInterfaceGroup * circleGroup; @end @implementation InterfaceController // Sirkelretningsknapper - (IBAction) leftButtonPressed [self animatedWithDuration: 0.5 animasjoner: ^ [self.circleGroup setHorizontalAlignment: WKInterfaceObjectHorizontalAlignmentLeft]; ];  - (IBAction) rightButtonPressed [self animatedWithDuration: 0.5 animasjoner: ^ [self.circleGroup setHorizontalAlignment: WKInterfaceObjectHorizontalAlignmentRight]; ];  - (IBAction) upButtonPressed [self animatedWithDuration: 0.5 animasjoner: ^ [self.circleGroup setVerticalAlignment: WKInterfaceObjectVerticalAlignmentTop]; ];  - (IBAction) downButtonPressed [self animatedWithDuration: 0.5 animasjoner: ^ [self.circleGroup setVerticalAlignment: WKInterfaceObjectVerticalAlignmentBottom]; ];  @slutt

    Disse handlingene vil flytte den røde sirkelen i en bestemt retning. Og som du kan se, oppnår vi det ved å sette inn vertikal og / eller horisontal justering i en animasjonsblokk.

    Trinn 5: Koble utgangene

    Åpen Interface.storyboard og koble uttakene som vist nedenfor.


    Det burde gjøre det. Kjør prosjektet, og hvis du har fulgt trinnene ovenfor, bør du kunne flytte den røde sirkelen rundt skjermen ved hjelp av piltastene.

    5. Mer komplekse animasjoner

    I den andre delen av denne opplæringen lager vi en push animasjon. Siden de fleste trinnene er like, vil jeg bevege meg litt raskere denne gangen.

    Trinn 1: Opprett animasjon

    Åpen InterfaceController.m og opprett et nytt uttak, firstScreenGroup, av type WKInterfaceGroup i klassen forlengelse av InterfaceController klasse.

    @interface InterfaceController () @property (ikkeatomisk, svak) IBOutlet WKInterfaceGroup * circleGroup; @property (nonatomic, weak) IBOutlet WKInterfaceGroup * firstScreenGroup; @slutt

    Deretter implementerer du følgende handlinger i InterfaceController klasse.

    - (IBAction) pushButtonPressed [self animatedWithDuration: 0.1 animasjoner: ^ [self.firstScreenGroup setAlpha: 0]; ]; [self animatedWithDuration: 0.3 animasjoner: ^ [self.firstScreenGroup setWidth: 0]; ];  - (IBAction) popButtonPressed [self animatedWithDuration: 0.3 animasjoner: ^ [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 animatedWithDuration: 0.1 animasjoner: ^ self.firstScreenGroup setAlpha: 1];];); 

    pushButtonPressed, vi krymper den første skjermgruppen (vi vil lage den i neste trinn) og i popButtonPressed vi utvider den gruppen igjen. Vi animerer også alfaen i den første skjermgruppen for å gjøre animasjonen litt mer tiltalende.

    Trinn 2: Utvid brukergrensesnittet

    Åpen Interface.storyboard og legg til en ny gruppe i brukergrensesnittet. Sett gruppen som allerede var der, den som inneholder Sirkel og gruppen med knapper, inne i den nye gruppen. Sett sin Oppsett til Horisontal og gi nytt navn til den innebygde gruppen til Første skjerm. Dette vil komme til nytte senere. Resultatet skal se slik ut:


    Deretter legger du til en annen gruppe som vil være på samme nivå som Første skjerm gruppe. Sett sin Oppsett til vertikal. Legg til et bilde og en knapp til gruppen. Du kan legge til bokstavelig talt et bilde, bare sørg for at du legger noe der, da ellers ville animasjonen se litt tørr ut. Sett tittelen på knappen til "< Pop". Connect the button to the popButtonPressed handling vi opprettet tidligere. Brukergrensesnittet bør nå se slik ut:


    Legg til en knapp til Første skjerm gruppe. Sett tittelen til "Push" og dens vertikale posisjon til Bunn. Koble til knappen til pushButtonPressed handling. Brukergrensesnittet bør nå se slik ut:


    Det er en ting vi må gjøre, koble til firstScreenGroup uttak til gruppen vi heter Første skjerm.

    Trinn 3: Bygg og kjøre

    Når du bygger og kjører appen, bør du kunne presentere den andre skjermen ved å trykke på knappen med tittelen "Push>" nederst. Du kan avvise den andre skjermen ved å trykke på knappen med tittelen "< Pop". It should look like this:

    Konklusjon

    I denne opplæringen har vi tatt en titt på innfødte animasjoner på watchOS 2. Jeg håper det har gitt deg en smak av hva du kan oppnå med animasjoner på watchOS. Hvis du har spørsmål, kan du legge inn en kommentar nedenfor eller kontakte meg på Twitter.