• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

TIPS#015 – Creare animazioni per i nostri oggetti in 3 passi

By Francesco Burelli | on 26 Ottobre 2010 | 18 Comments
Tips & Tricks

Ciao a tutti! In questo nuovo tips di programmazione iPhone vi spiegherò molto brevemente come ottenere animazioni semplici o articolate in un modo a dir poco semplicissimo! Il cuore di tutto sta in questi tre passaggi:

1. Definire l’animazione

[UIView beginAnimations:@"animation" context:NULL];

[UIView setAnimationDuration:0.3];

[UIView setAnimationDelegate:self];

[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

Qui si definiscono, come avrete senz’altro intuito, il nome dell’animazione, la sua durata ed eventualmente un delegato che verrà chiamato quando l’animazione termina.

2. L’animazione vera e propria

[theView setAlpha:0];

In questo nostro esempio imposto semplicemente il valore di “Alpha” che il mio oggetto dovrà avere a fine animazione, il resto lo farà Objective-C!

Sarà lui, infatti, a creare l’animazione dal passaggio dal valore attuale di alpha (quello prima della nostra istruzione) a tutti i valori successivi fino al quello indicato proprio con la nostra riga di codice (che vedete sopra). Nel nostro caso, a fine animazione, l’oggetto diverrà trasparente e avremmo così ottenuto un effetto di dissolvenza, molto carino.

3. Fine del blocco di animazione

[UIView commitAnimations];

NOTA: è chiaro che nel blocco dove definite “cosa deve fare” l’animazione potrete mettere quanti oggetti volete, o ancora modificare il frame e quant’altro!

Per maggiore chiarezza vi ho preparato un piccolo esempio, che potete scaricare da QUI.

Nel progetto troverete un’immagine che si dissolve e una toolbar che scompare spostandosi al di sotto dello schermo. In questo esempio, l’animazione parte al tocco dello schermo in qualsiasi punto, ma voi potrete ovviamente impostare le vostre animazioni come meglio preferite!

Share this story:
  • tweet

Tags: animazione oggetti iphonecreare animazioni iphoneFrancesco Burelliiphone snippetstips iphone

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • FullControl: l’applicazione per il controllo remoto delle app sui nostri Mac [Contest all’interno]

    22 Aprile 2011 - 23 Comments
  • L#016 – Gestione della memoria: UIViewController, loadView e viewDidUnload

    29 Marzo 2011 - 1 Comment
  • TIPS#018 – Creare animazioni di oggetti tramite metodi “block-based”

    17 Marzo 2011 - 1 Comment

Author Description

18 Responses to “TIPS#015 – Creare animazioni per i nostri oggetti in 3 passi”

  1. 26 Ottobre 2010

    Tweets that mention Creare animazioni per i nostri oggetti in 3 passi [Objective-C] | devAPP -- Topsy.com

    […] This post was mentioned on Twitter by FabrizioGaucci and devAPP, Bubi Devs. Bubi Devs said: TIPS#015 – Creare animazioni per i nostri oggetti in 3 passi: Ciao a tutti! In questo nuovo tips di programmazione… http://bit.ly/choYy6 […]

  2. 26 Ottobre 2010

    fabrizio

    rubato da http://www.cescobaz.altervista.org/home/

    ladri

  3. 26 Ottobre 2010

    Staff devAPP

    @fabrizio wow che bella conclusione affrettata ehehhe ^^

    Dai un’occhiata al nome dell’autore di questo tips ^^

    L’autore, Francesco Burelli, scrive per noi su devAPP e i suoi articoli li riporta anche nel suo blog personale “cescobaz”.

    Piccola precisazione: noi di devAPP non rubiamo niente! Cerchiamo di offrirvi contenuti il più originali possibili e, per quanto possiamo, farina del nostro sacco! Per i pochissimi articoli tradotti per voi da altri siti stranieri abbiamo comunque e SEMPRE un’autorizzazione scritta da parte degli autori e in ogni caso citiamo sempre, come è giusto che sia, l’articolo originale. Essendo circa 40 autori, poi, potrebbe anche sfuggire qualcosa agli editor che programmano le pubblicazioni degli articoli, (fortunatamente ad oggi non mi pare sia sfuggito nulla di così grave, anche se potrebbe capitare), ma da qui a darci dei ladri ^^ mi sembra un tantino eccessivo 😉 Basta una segnalazione 😉 Prima di attaccare con affermazioni del genere (direi abbastanza pesanti) conviene avere ALMENO la certezza di quello che si sta per dire 😉

    Ricordo infine che siamo qui per voi, gratis, non chiediamo nulla a nessuno.. Siamo una Community completamente free e vogliamo semplicemente diffondere le nostre conoscenze con tutti voi, anche con chi è alle prime armi che può trovare nelle nostre pagine un piccolo aiuto durante la sua nuova avventura.

    Nulla di personale, sia chiaro.. Il tuo commento è bello che approvato insomma.. e una risposta era d’obbligo! Detto questo ti saluto e buona permanenza sulle nostre pagine 🙂

  4. 26 Ottobre 2010

    Francesco Burelli

    Grazie @fabrizio che mi segui su “cescobaz.altervista.org” :), ma come è già stato detto io scrivo anche su questo sito quindi riporto gran parte degli articoli da entrambe le parti.

    DevApp è un sito serio non ruberebbe mai.

    Saluti!

  5. 26 Ottobre 2010

    Francesco

    Salve,
    Credo che abbia esagerato nel darvi dei ladri da quello che ho capito non e’ nemmeno il proprietario dell’altro blog. Bho
    Comunque il delegato ritorna qualcosa? [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)]; ? E come posso usare il valore di ritorno? Grazie.

  6. 26 Ottobre 2010

    Francesco Burelli

    (Sono io il “proprietario” dell’altro blog, comunque nessun problema è stato solo un po’ impulsivo, ora avrà capito come stanno le cose)

    Allora il metodo al delegato lo si può sfruttare per dire a qualcuno che l’animazione è finita, infatti se l’animazione durasse 10 secondi, senza usare un timer o cose simili, quando viene chiamato il delegato vuol dire che l’animazione è conclusa e il delegato può proseguire a fare altro di conseguenza.
    Si potrebbero fare anche delle animazioni in sequenza…. appena finisce una ne parte un’altra…

  7. 26 Ottobre 2010

    Francesco Burelli

    Scusa dimenticavo, il metodo deve essere del tipo

    – (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context;

    Trovi tutte le informazioni dettagliate come sempre nella documentazione Apple sotto la classe UIView

  8. 26 Ottobre 2010

    fabrizio

    allora scusate. è che capitano purtroppo molto spessi questi fattacci.
    mia culpa

  9. 26 Ottobre 2010

    fabrizio

    premetto che l’autore ho fatto veramente fatica a vederlo, colpa di un corpo del font un pò piccolino e del colore che non contrasta con il background.

    poi per accorgermi che effettivamente sia lo stesso autore c’è da fare un controllo incrociato stile investigatore. 😀

  10. 26 Ottobre 2010

    Staff devAPP

    Si questo si, dico solo di non arrivare a conclusioni affrettate, ancor peggio in pubblico 😉 Ad ogni modo nessun problema.. Se hai bisogno siamo qui 😉

  11. 27 Ottobre 2010

    fabrizio

    non è possibile editare commenti. non si può fare proprio nulla?

  12. 10 Dicembre 2010

    Ragazzetto

    provo a fare una domanda magari è semplice ma da solo non la sfango !

    Allora , l’ animazione mi funziona , ma se io volessi far eseguire due animazioni in sequenza e non in conteporanea ?
    Se metto le due animazioni tra
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    e
    [UIView commitAnimations];

    vengono eseguite conteporaneamente !
    e se invece volessi mandare la mia animazione in loop come devo fare ? ad esempio far lampeggiare un immagine facendo variare l’ alpha da 0 a 1 e viceversa continuamente ?
    Grazie in anticipo
    Sperando che non sia tremendamente complesso 😉

  13. 11 Dicembre 2010

    Francesco Burelli

    Ok, non è difficilissimo!
    Premettendo che come hai intuito tu non puoi usare lo stesso blocco UIView… vuol dire che ne devi fare due e usarli in momenti diversi. Quindi

    1. crea un metodo che fa comparire l’oggetto (alpha = 1.0);
    2. crea un metodo che fa Scomparire l’oggetto (alpha = 0.0);
    3. nel metodo delegato (il metodo che ti notifica la fine dell’animazione) se la fine dell’animazione è per la “comparsa” chiami il metodo per la scomparsa e viceversa.

    un esempio

    – (void)compari {
    [UIView beginAnimations:@”compare” context:NULL];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

    [oggetto setAlpha:1.0];

    [UIView commitAnimations];
    }

    – (void)scompari {
    [UIView beginAnimations:@”scompare” context:NULL];
    [UIView setAnimationDuration:0.3];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

    [oggetto setAlpha:0.0];

    [UIView commitAnimations];
    }

    // delegato
    – (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {

    if([animationID isEqualToString:@”compare”]) {
    [self scompari];
    }
    else if([animationID isEqualToString:@”scompare”]) {
    [self compari];
    }

    }

    Nota che puoi anche fare che compaia lentamente e scompaia velocemente e viceversa! Basta modificare i tempi di una o l’altra animazione.

    Lo scritto al momento quindi non so se funziona, ma teoricamente è corretto.
    Fammi sapere ciao

  14. 12 Dicembre 2010

    Ragazzetto

    Grazie francesco !

  15. 17 Marzo 2011

    Creare animazioni di oggetti con una sola riga di codice [Objective-C] | devAPP

    […] veloce Tips di programmazione in Xcode, nello specifico vedremo una soluzione alternativa al “TIPS#015 – Creare animazioni per i nostri oggetti in 3 passi” scritto tempo fa da Francesco Burelli. Vedremo come creare l’animazione di un oggetto […]

  16. 5 Agosto 2011

    jaxma

    ciao ragazzi complimenti per l’articolo!!
    volevo chiedere se qualcuno sa come produrre una animazione che permette di muovere un oggetto, ad es. una ruota che gira, ma in maniera realistica, cioè rallentando con un movimento naturale. Mi spiego meglio. Pensate al pickerview che gira tanto più veloce e più a lungo quanto più veloce è stato il movimento sullo schermo, oppure alla classica ruota della fortuna..
    Grazie mille

  17. 5 Agosto 2011

    Francesco Burelli

    #14 io farei nel seguente modo:
    un timer che ogni millisecondo effettua una rotazione secondo un’equazione. Il problema è l’equazione, intuitivamente si potrebbe pensare a una variabile A che viene decrementata ogni volta che il metodo del timer viene chiamato (quindi ogni millisecondo). La variabile A poi moltiplicata per una costante, determina di quanto ruota l’oggetto. Infine, più l’accelerazione del dito è stata maggiore, più il valore iniziale di A sarà maggiore.
    Quando A sarà a 0 o prossima allo 0 allora il timer cessa di funzionare e l’animazione è completata

  18. 7 Agosto 2011

    jaxma

    ciao grazie per aver risposto.. in effeti avevo pensato anche io ad una soluzione “manuale” .. pensavo che forse esiste un tipo di animazione “innata” che apple da qualche parte ha inserito e che potrebbe essere utilizzata. Per intenderci quando usiamo la uitableview ad es. la decellerazione che viene usata a seconda della velocità del dito…

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO