Como describo here, utilicé tanto UIViews como CALayers en animaciones y encontré una diferencia de rendimiento insignificante entre ellos. UIViews son envoltorios muy ligeros alrededor de las capas. Además, cualquier animación basada en capas que necesite se puede aplicar fácilmente a la capa de respaldo de UIView.
He usado CALayers directamente en situaciones en las que quería crear elementos de interfaz de usuario multiplataforma (Mac/iOS), porque los CALayers son casi idénticos en su implementación en ambas plataformas (a diferencia de NSViews y UIViews significativamente diferentes). Los CALayers no tienen rutinas táctiles listas para usar, pero puede agregar esa capacidad si es necesario.
También hay algunos casos de borde donde es posible que desee trabajar directamente con capas, como cuando se intenta hacer una manipulación tridimensional limitada de las capas (como en un efecto CoverFlow) o cuando se utiliza CAReplicatorLayer para producir efectos de partículas.
Terminé yendo con UIViews, principalmente porque la animación UIView con bloques es mucho más fácil de implementar en casos donde es importante ejecutar animaciones/tomar acciones sucesivamente. (Esos bloques de finalización son muy limpios, y usar una llamada de delegado 'animationDidStop' iba a ser una pesadilla para implementar en mi caso particular.) –
@Greg - Sí, las nuevas animaciones de UIView basadas en bloques están bastante limpias. Sin embargo, puede obtener callbacks de finalización de bloques similares con CAAnimations utilizando '' setCompletionBlock: 'de CATransaction, que ejecutará un bloque al finalizar todas las animaciones envueltas en esa transacción. Solo algo en lo que pensar si es que quieres ir por ese camino. –