Come ho descritto here, ho utilizzato sia UIViews che CALayer nelle animazioni e ho trovato una differenza di prestazioni trascurabile tra di loro. Gli UIViews sono involucri molto leggeri attorno agli strati. Inoltre, qualsiasi animazione basata su livelli di cui hai bisogno può essere applicata facilmente al livello di supporto di UIView.
Ho usato CALayer direttamente in situazioni in cui volevo creare elementi dell'interfaccia utente multipiattaforma (Mac/iOS), perché i CALayer sono quasi identici nella loro implementazione su entrambe le piattaforme (a differenza delle NSViews e delle UIViews significativamente differenti). I CALayer non hanno routine di gestione del tocco fuori dalla scatola, ma è possibile aggiungere tale capacità se necessario.
Ci sono anche alcuni casi limite in cui si potrebbe voler lavorare direttamente con i livelli, come quando si tenta di eseguire una manipolazione 3-D dei livelli limitata (come in un effetto CoverFlow) o quando si utilizza CAReplicatorLayer per produrre effetti particellari.
fonte
2011-01-14 03:22:01
Ho finito per andare con UIViews, principalmente perché l'animazione di UIView con i blocchi è molto più facile da implementare nei casi in cui è importante eseguire animazioni/intraprendere azioni successivamente. (Questi blocchi di completamento sono molto puliti e l'utilizzo di una chiamata 'animationDidStop' delegata sarebbe stato un incubo da implementare nel mio caso particolare.) –
@Greg - Sì, le nuove animazioni UIView basate su blocchi sono piuttosto pulite. Tuttavia, è possibile ottenere richiamate di completamento blocco simili con CAAnimations utilizzando '+ setCompletionBlock:' di CATransaction, che eseguirà un blocco al completamento di tutte le animazioni incluse in quella transazione. Solo qualcosa a cui pensare se si potrebbe voler andare in quel modo. –