Я немного смущен, когда использую CALayer на iPhone или Mac, и когда не использовать его? CoreAnimation отлично работает с моими объектами на основе UIView, не используя CALayer. Когда подходящее время, чтобы копаться в этом классе?
Когда использовать CALayer на Mac/iPhone?
Ответ 1
В моих тестах UIView и CALayer обеспечивают примерно такой же уровень производительности на iPhone. Как отмечает rpetrich в своем комментарии, UIViews являются тонкой оболочкой вокруг CALayers. На Mac, CALayers намного легче, чем NSViews.
Как указывает Бен, вы можете выйти за пределы возможностей неявной анимации, работая непосредственно с CALayers, даже предоставляя некоторые 3-D эффекты через CATransform3D. Во многих случаях вы можете сделать это даже с помощью стандартных представлений, обратившись к поддерживающему слою (если представление поддерживает слой).
Еще одна проблема - кросс-платформенный (Mac/iPhone) код. Мое приложение для iPhone использует интерфейс CALayer для своего основного вида в значительной степени, потому что я могу использовать тот же самый код для рисования этого интерфейса на своем Mac коллега. В качестве другого примера я направляю вас в Framework Core Plot, который полностью использует графики с использованием CALayers и работает как на Mac, так и на iPhone. CALayers практически одинаковы на обеих платформах, где UIView и NSView имеют очень разные интерфейсы.
Ответ 2
Если вы можете делать то, что хотите, с "неявной анимацией" (предлагаемой UIKit/AppKit без необходимости копаться в CA, слоях и аниматорах), тогда определенно пройдите по этому маршруту.
CoreAnimation вступает в игру, когда вы начинаете использовать более сложные анимации, такие как нелинейное движение или повторяющиеся эффекты, и некоторые синхронизированные эффекты. Там LOT вы можете с этим справиться, но это довольно мощный инструмент (со сравнительной кривой обучения, по крайней мере, по сравнению с материалом UIKit).