IOS SDK-animasjoner lar deg krydre programmene dine med tiltalende visuelle effekter og overganger. Med iOS SDK brukes animasjoner ofte til å omplassere visninger, endre størrelser på visninger, fjerne eller legge til visninger fra visningshierarkier, og skjule visninger helt. Les videre for å lære hvordan disse effektene oppnås!
For å lage en animasjon med iOS SDK trenger du ikke skrive noen egendefinert tegningskode. Alt du trenger å gjøre er å utløse animasjonene med noen få enkle samtaler, og Core Animation-rammen vil gjøre det harde arbeidet. Med dette rammeverket kan du lage en animasjon på bare noen få linjer med kode, og det er en god ting for oss som lat utviklere!
I UIKit blir animasjoner utført med UIView-objekter. Du kan animere endringer i egenskapene til visning eller bruk overgangsanimasjoner for å erstatte ett sett med visninger med en annen. Du kan animere følgende UIView-egenskaper med UIKit:
Hvis søknaden din kjører i iOS 3.2 og tidligere, må du bruke beginAnimations: kontekst:
og commitAnimations
klassemetoder for UIView for å definere animasjonsblokkene dine. Dette er metoden jeg vil bruke i dette raske tipset, fordi det fungerer på alle iOS-versjoner.
For å starte en animasjonsblokk, vil du bruke [UIView startAnimations: (NSString *) kontekst: (void *)];
. Etter at du har skrevet koden for å sette opp animasjonen din (dvs. endre UIView-egenskapene), avslutter du animasjonsblokken med [UIView commitAnimations];
.
Du kan konfigurere en animasjonsblokk med følgende UIView-klassemetoder:
Med begynnelsen og forpligningskoden ovenfor kan du opprette en animasjon. For å se dette i praksis, la oss se på et eksempel:
[UIView startAnimations: @ "My First Animation" kontekst: null]; [UIView setAnimationDuration: 1.0]; [UIView setAnimationDelay: 2.0]; self.view.backgroundColor = [UIColor redColor]; [UIView commitAnimations];
Som du kan se, startet jeg animasjonsblokken med [UIView startAnimations: (NSString *) kontekst: (void *)];
og kalte det? Min første animasjon ?. Deretter setter jeg varigheten til 1 sekund og forsinkelsen til 2 sekunder, så animasjonen starter etter to sekunder, og det tar 1 sekund å fullføre. Med denne animasjonen animerer jeg visningen bakgrunnsfarge til en rød farge. Hvis visningens bakgrunnsfarge allerede var rød, vil du ikke se animasjonen, men den vil fortsatt animere. Til slutt slutter jeg animasjonsblokken med [UIView commitAnimations];
.
Her er et eksempel på en animasjon hvor vi roterer i en visning:
[UIView startAnimations: @ "Rotate" kontekst: null]; [UIView setAnimationDuration: 1.0]; [UIView setAnimationDelegate: self]; [UIView setAnimationDidStopSelector: @selector (rotateBack)]; TheView.transform = CGAffineTransformMakeRotation (M_PI); [UIView commitAnimations];
Oppsettet for denne animasjonsblokken ser ut som det forrige, bare denne gangen brukte jeg animasjonsdelegatet og brukte transformasjonsegenskapen. Hvis du vil bruke stoppet väljeren metode, må du sette delegaten til selv-. Så, hvis denne animasjonen er ferdig metoden rotateBack vil bli kalt. Med transformasjonsegenskapen kan du skala, rotere eller oversette en visning. Transformasjonen vil alltid være i 2D. For rotasjonsvinkelen brukte jeg M_PI som du kan se. Som standard fungerer Objective-C med radianer i stedet for grader. 360 grader er det samme som 2?, Så visningen vil rotere 180 grader.
- (void) rotateBack [UIView startAnimations: @ "Rotate back" kontekst: null]; [UIView setAnimationDuration: 1.0]; theView.transform = CGAffineTransformIdentity; [UIView commitAnimations];
Dette er metoden som vil bli kalt når rotasjonsanimasjonen er ferdig. I denne animasjonsblokken roterer vi visningen tilbake til sitt opprinnelige sted. Vi gjør det med CGAffineTransformIdentity
funksjon. Dette vil angre rotasjonstransformasjonen.
Interessert i å lære mer? Du kan se noen flere animasjonseksempler i vedlagte kildekoden.
Jeg håpet du likte dette iOS SDK raske tipset på animasjoner! Gi meg beskjed om tilbakemelding ved å legge igjen en kommentar nedenfor. Du kan også foreslå ideer for flere opplæringsprogrammer for å dekke i fremtiden!