Анимация
Анимация является неотъемлемой частью технологии для представления пользовательских интерфейсов и в iOS и в OS X. Это также считают неотъемлемой частью пользовательского опыта для этих платформ. Проще говоря, анимация является иллюзией движения или трансформации через дисплей серии изображений в быстрой последовательности с каждым изображением, отличающимся немного от предыдущего. Несмотря на то, что анимация улучшает пользовательский опыт, это далеко от простой «услады для глаз». Анимации дают пользовательскую обратную связь или контекст для того, что происходит в пользовательском интерфейсе. Например, в приложении для повышения производительности iOS, когда пользователь касается строки в табличном представлении, то представление обычно скользит из представления налево, и новое представление задвигает от права занять его место; эти анимации визуально укрепляют соединение между перечисленным элементом и подробным представлением его. iOS и OS X автоматически поддерживают многие анимации, которые Вы видите, но можно также создать анимации для других частей пользовательского интерфейса приложения.
Базовые анимации полномочий анимации в пользовательском интерфейсе
Основной источник возможностей анимации на обеих платформах является Базовой Анимацией. Базовая Анимация является высокой скоростью, 2D механизмом разделения на уровни с интерфейсами Objective C для доступа к тому механизму. С Базовой Анимацией, после того, как устанавливается анимация, выполнение той анимации абсолютно автоматическое. Вы не должны устанавливать циклы или таймеры, Вы не должны рисовать кадр кадром, и Вы не должны отслеживать текущее состояние своей анимации.
Ключевая технология Базовой Анимации является уровнем. Уровни являются легкими объектами (CALayer
) это, хотя подобный представлениям, является фактически объектами модели, присвоенными представлениям. Они инкапсулируют геометрию, синхронизацию и визуальные свойства для представления что содержание дисплеев на основе тех факторов. Все, что необходимо сделать, установлено содержание уровня, сконфигурируйте свойства анимации, и затем позвольте Базовой Анимации внести своя вклад.
Анимации должны иметь Target, тип и синхронизирующие подробные данные
Для всех анимаций необходимо указать целевой объект: видимый объект со свойством, которое может быть анимировано (такие как его кадр). Необходимо также указать, какую анимацию для выполнения — например, переместить ли цель, изменить размеры или масштабировать его или постепенно появиться он или. Наконец, все анимации требуют информации синхронизации, которая может включить несколько факторов, включая продолжительность анимации, повторяется ли это, и ее следование — т.е. замедляется ли это или убыстряется или в начале или в конце анимации.
Неявный по сравнению с явными анимациями
Каждое представление в iOS или OS X (или может быть), поддержанный расположенным на слое объектом, оптимизирующим составление композита и операции анимации для представления. Несколько поддержанных уровнем свойств представлений, включая кадр представления, цвет, и непрозрачность, по сути способны к анимации. При изменении их значений Базовая Анимация анимирует переход от старого значения до нового значения. Эти неявные анимации требуют, чтобы Вы дали минимальные инструкции UIKit или платформам AppKit, но после того, как они получают эти инструкции, они автоматически выполняют анимации.
Даже когда свойства представления не могут быть анимированы, можно все еще явно анимировать представление через те свойства. Для явных анимаций необходимо более активно управлять анимацией и представленным содержанием с помощью средств Базовой Анимации.
Платформы интегрируют представления и базовую анимацию по-другому
Базовая Анимация интегрируется с UIView
класс платформы UIKit и NSView
класс платформы AppKit, но природа той интеграции отличается. Существенное различие - то, что UIKit интегрирует Базовую Анимацию в основу реализации рендеринга представления, тогда как AppKit требует, чтобы Вы запросили Базовые возможности Анимации.
В UIKit, каждое представление (UIView
объект), поддерживается a CALayer
возразите что UIView
когда представление инициализируется, класс автоматически создает. Поскольку уровень так близко соединяется с представлением, можно получить доступ к Базовой Анимации через методы и свойства UIView
класс. Можно получить доступ к расположенному на слое объекту непосредственно посредством представления layer
свойство, но Вы не можете изменить уровень после того, как будет создаваться представление.
В AppKit, NSView
класс интегрируется с Базовой Анимацией и уровнями двумя способами, оба из которых требуют явного действия с Вашей стороны.
Поддержанные уровнем представления viewsare, что Слои анимации Ядра использования как их запоминающее устройство. Для этого приложение должно отправить a
setWantsLayer:
обменивайтесь сообщениями к представлению с параметромYES
.Хостинг уровня. В этом подходе приложение устанавливает Базовое дерево Слоя анимации, зеркально отражающее представления в иерархии представления или некоторой части той иерархии. Приложение должно управлять уровнями непосредственно для взаимодействия с содержанием уровня. Вы запрашиваете размещенные уровнем представления путем установки объекта корневого слоя представления явно (
setLayer:
) сопровождаемый asetWantsLayer:
вызвать.
Платформа AppKit также поддерживает прокси анимации, предоставляющие простую в использовании поддержку анимации, избегающую потребности управлять расположенными на слое объектами непосредственно. Это также предлагает NSAnimation
класс и его подкласс NSViewAnimation
для обобщенной поддержки анимации и для возможности соединения многократных анимаций и анимации многократных окон и представлений.