Core Animation

Core Animation

Cocoa

Core Animation представляет собой набор Objective-C классов для рендеринга графики, проектирования, и анимации. Core Animation обеспечивает изменение анимации с использованием передовых эффектов композиции, сохраняя иерархический уровень абстракции.

Динамические, анимированные пользовательские интерфейсы трудно создавать, но Core Animation позволяет создавать эти интерфейсы легче, обеспечивая:

  • Высокую производительность композиции с простой доступной моделью программирования.
  • Знакомую по иерархии видов абстракцию, которая позволяет создавать сложные пользовательские интерфейсы с использованием иерархии слоев объектов.
  • Легкую структуру данных. Можно отображать и анимировать сотни слоев одновременно.
  • Абстрактный интерфейс, анимации, который позволяет запустить анимацию в отдельном потоке, независимо от цикла выполнения вашего приложения. После того, как анимация настраивается и запускается, Core Animation принимает на себя полную ответственность за управление ее частотой кадров.
  • Улучшение производительности приложений. Приложения должны только перерисовывать содержимое, если оно изменяется. Минимальное взаимодействие приложения, необходимое для изменения размера и расположения слоев. Core Animation также исключает применение кода, который воздействует на частоту кадров анимации.
  • Гибкую модель менеджера компоновки, в том числе менеджер, который позволяет устанавливаться положению и размеру слоя по отношению к атрибутам родственного слоя.

Используя Core Animation можно создавать динамические пользовательские интерфейсы для своих приложений без использования низкоуровневых API, графики, таких как OpenGL, чтобы получить респектабельную по производительности анимацию.

Классы Core Animation

Основные классы анимации можно разделить на несколько категорий:

  • Слой классы, которые предоставляют контент для отображения
  • Анимацию и временные классы
  • Макет и ограничивающие классы
  • Классы транзакций изменений множественных слоев в atomic режиме

Основные классы Core Animation содержатся в Quartz Core framework, хотя дополнительные классы слоев могут быть определены в других структурах. Ниже показана иерархия Core Animation.

Core Animation class hierarchy

Классы слоев

Классы слоев являются основой Core Animation и обеспечивают абстракции, которые должны быть знакомы по использованию NSView или UIView. Базовая функциональность слоя обеспечивается классом CALayer, который является родительским классом для всех типов слоев Core Animation.

По аналогии с экземпляром класса вида, экземпляр CALayer имеет один слой родителя (superlayer) и коллекцию подслоев, создавая иерархию слоев, которые называют деревом слоев. Слои следуют с зада наперед, как виды и указывают свою геометрию по отношению к своим superlayer, создавая локальную систему координат. Тем не менее, слои позволяют применять более сложные преобразования, путем включения преобразования матрицы, которые позволяют поворачивать, наклонять, масштабировать и проецировать содержимое слоя. "Слои, геометрия и трансформации" обсуждает геометрию слоя более подробно.

Классы анимации и синхронизации

Многие из визуальных свойств слоя имеют неявную анимацию. Просто изменив значение анимируемым свойством, слой автоматически анимирует от текущего значения к новому значению. Например, установка hidden свойств слоя на YES запускает анимацию, которая приводит к тому, чтобы слои постепенно исчезают. Большинство свойств анимаций имеют связанную по умолчанию анимацию, которую вы можете легко настроить и заменить.

Animatable свойства также могут быть анимированными явно. Для явной анимации свойства необходимо создать экземпляр одной из анимаций Core Animation в классе и указать необходимые визуальные эффекты. Явная анимация не меняет значение свойства в слое, она просто оживляет его на дисплее.

Core Animation обеспечивает классы анимации, которые могут анимировать все содержимое слоя или отдельные атрибуты, используя как основные, так и ключевые кадры анимации. Все классы анимации Core Animation происходят от абстрактного CAAnimation класса. CAAnimation принимает CAMediaTiming протокол, который обеспечивает длительность простоя, скорость и повторение для анимации. CAAnimation также принимает CAAction протокол. Этот протокол обеспечивает стандартизированные средства для запуска анимации в ответ на действия вызванные слоем.

Классы анимации также определяют временные функции, которые описывают темп анимации как простую кривую Безье.

Классы менеджера расположения

Классы видов Application Kit обеспечивают классическую модель "амортизатора и пружины" позиционирования слоев относительно их superlayer. В то время как слои поддерживают эту модель, Core Animation на Mac OS X предоставляет более гибкий механизм управления компоновкой, которая позволяет разработчикам писать собственные менеджеры компоновки.

CAConstraint класс, Core Animation представляет собой макет менеджер, который организует подслои с помощью набора ограничений, которые вы укажете. Каждое ограничение (инкапсулируется экземпляром класса CAConstraint) описывает отношение одного геометрического атрибута слоя (левой, правой, верхней или нижней кромке или горизонтального или вертикального центра) по отношению к геометрическим атрибутом одного из его родственных слоев или superlayer.

Класс управления транзакциями

Любое изменение свойства слоя в анимационное должно быть частью транзакции. Класс CATransaction, Core Animation несет ответственность за дозирование нескольких операций анимации в atomic обновлении дисплея. Вложенные транзакции поддерживаются.

Core Animation поддерживает два типа операций: операции неявной и явной транзакции. Неявные операции создаются автоматически, когда анимируемые свойства слоя изменяются потоком без активной транзакции и совершаются автоматически при запуске цикла потока следующей итерации. Явные транзакции происходит, когда приложение посылает классу CATransaction сообщение начать до изменения слоя и фиксации сообщения позднее.

 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac