Как я описываю here, я использовал оба UIViews и CALayers в анимации и нашел незначительную разницу в производительности между ними. UIViews - очень легкие обертки вокруг слоев. Кроме того, любые анимации на основе слоев могут быть легко применены к базовому слою UIView.
Я использовал CALayers непосредственно в ситуациях, когда я хотел создать элементы межплатформенного интерфейса (Mac/iOS), поскольку CALayers практически идентичны в своей реализации на обеих платформах (в отличие от существенно разных NSViews и UIViews). У CALayers нет никаких процедур обработки касаний из коробки, но вы можете добавить эту возможность, если вам нужно.
Есть также некоторые краевые случаи, где вы можете работать непосредственно со слоями, например, при попытке ограничить трехмерное манипулирование слоями (как в эффекте CoverFlow) или при использовании слоя CAReplicatorLayer для создания эффектов частиц.
Я закончил работу с UIViews, в первую очередь потому, что анимация UIView с блоками намного проще реализовать в тех случаях, когда важно запускать анимацию/предпринимать действия последовательно. (Эти блоки завершения очень чисты, и использование вызова делегата «animationDidStop» станет кошмаром для реализации в моем конкретном случае.) –
@Greg. Да, новые блочные анимации UIView довольно чисты. Однако вы можете получить аналогичные обратные вызовы завершения блока с помощью CAAnimations, используя «+ setCompletionBlock:» CATransaction, который будет выполнять блок по завершению всех анимаций, завернутых в эту транзакцию. Просто подумать о том, хотите ли вы пойти именно так. –