iOS: я должен добавить UIViews или CALayers для анимации? - PullRequest
7 голосов
/ 14 января 2011

Допустим, я хочу добавить к изображению 50 изображений с целью их анимации.И давайте предположим, что я планирую использовать Core Animation (например, CABasicAnimation), а не анимацию «UIView».

Мне лучше реализовать это, добавив 50 подпредставлений или 50 подслоев?Это имеет значение?

Спасибо.

Ответы [ 4 ]

17 голосов
/ 14 января 2011

Как я описываю здесь , я использовал и UIViews, и CALayers в анимациях и обнаружил незначительную разницу в производительности между ними. UIViews - очень легкие обертки вокруг слоев. Кроме того, любые необходимые вам анимации на основе слоев могут быть легко применены к вспомогательному слою UIView.

Я использовал CALayers напрямую в ситуациях, когда я хотел создать кросс-платформенные (Mac / iOS) элементы пользовательского интерфейса, потому что CALayers практически идентичны в своей реализации на обеих платформах (в отличие от существенно разных NSView и UIViews). CALayers не имеют никаких процедур обработки касаний из коробки, но вы можете добавить эту возможность, если вам нужно.

Есть также некоторые крайние случаи, когда вам может потребоваться работать непосредственно со слоями, например, при попытке выполнить ограниченную трехмерную манипуляцию со слоями (как в эффекте CoverFlow) или при использовании CAReplicatorLayer для создания эффектов частиц.

1 голос
/ 14 января 2011

Разница для такого небольшого количества изображений незначительна. Используйте то, что наиболее удобно.

1 голос
/ 14 января 2011

UIViews содержат подслои, поэтому они имеют больший вес и содержат вещи, которые вам, вероятно, не нужны для всех 50 изображений, такие как обработчики событий и сенсорных переменных. Поэтому использование слоев, вероятно, будет несколько более эффективным и потребляет немного меньше памяти, чем использование представлений для каждого изображения.

0 голосов
/ 14 января 2011

Я не делал анимацию (пока :-), но материал, который я помню, читая об этом, предлагает создать одно изображение со всеми 50 мозаичными изображениями, а затем просто сместить правильное изображение при рисовании. Таким образом, вам нужен только один слой или UIImage или что-то еще, чтобы отобразить его. Я не знаю, что такое скорость, но думаю, что это сэкономит память и, вероятно, будет проще в управлении и кодировании.

...