Tutti e ogni libro afferma che ci sono animazioni implicite che si verificano in CALayer. Tuttavia, ogni volta che volevo verificarlo fino a quel momento, finivo con un hard-snap sul valore impostato. Nessuna animazione.Quando esattamente le animazioni implicite avvengono in iOS?
Ecco un esempio in un progetto in cui non accade nient'altro. Tutto ciò che faccio è creare una vista, quindi ottenere l'istanza di CALayer e fare qualcosa che dovrebbe essere animato implicitamente.
[theLayer setValue:[NSNumber numberWithFloat:M_PI * 1.1] forKeyPath:@"transform.rotation.z"];
Un altro:
CGRect currentBounds = theLayer.bounds;
currentBounds.size.width += 120.f;
[self.animatedLayer setBounds:currentBounds];
la vista contiene alcune cose, naturalmente, in modo da poter vedere il cambiamento. Vedo il cambiamento visivo, ma come uno scatto difficile. Nessuna animazione.
Quindi tutti questi libri sono errati e hanno in mente le vecchie conoscenze di Mac OS X quando si scrive su Animazione di base e animazioni implicite, o sto facendo qualcosa di sbagliato. Qualcuno può fornire un esempio funzionante che mostri animazioni implicite su iPhone?
Ottima risposta! Sono curioso - dove hai ottenuto tutte queste informazioni dettagliate? Ho controllato così tanti libri e fonti ma mancano di questi dettagli. –
Principalmente tentativi ed errori. Se si esegue l'override di '-actionForLayer: forKey:' in una sottoclasse di UIView è possibile disconnettere i risultati della chiamata a super e correlarli con l'eventuale presenza di un blocco di animazione attivo. Ha senso anche se ci pensate - l'UIView è il delegato del CALayer, e '-actionForLayer: forKey:' è il posto giusto dove connettersi se si desidera disabilitare le animazioni implicite. –
Ha molto senso. Grazie! –