Описание тега uidynamicanimator

Динамический аниматор предоставляет связанные с физикой возможности и анимацию для своих динамических элементов и обеспечивает контекст для этих анимаций.

Динамический аниматор предоставляет связанные с физикой возможности и анимацию для своих динамических элементов, а также предоставляет контекст для этих анимаций.

Он делает это путем взаимодействия между базовым физическим движком iOS и динамическими элементами с помощью объектов поведения, которые вы добавляете в аниматор.

Динамический элемент - это любой iOS или пользовательский объект, который соответствует протоколу UIDynamicItem. Классы UIView и UICollectionViewLayoutAttributes реализуют этот протокол, начиная с iOS 7.0. Вы можете реализовать этот протокол, чтобы использовать динамический аниматор с настраиваемыми объектами для таких целей, как реагирование на вращение или изменения положения, вычисленные аниматором.

Чтобы использовать динамику, настройте одно или несколько динамических поведений, включая предоставление каждому из них набора динамических элементов, а затем добавьте эти поведения в динамический аниматор.

You specify dynamic behaviors using any of the iOS primitive dynamic behavior classes: UIAttachmentBehavior, UICollisionBehavior, UIDynamicItemBehavior, UIGravityBehavior, UIPushBehavior, and UISnapBehavior. Each of these provides configuration options and lets you associate one or more dynamic items to the behavior. To activate a behavior, add it to an animator.

A dynamic animator interacts with each of its dynamic items as follows:

  • Before adding an item to a behavior, you specify the item’s starting position, rotation, and bounds (to do so, use properties of the item’s class, such as the center, transform, and bounds properties in the case of a UIView-based item)

  • After you add the behavior to an animator, the animator takes over: it updates the item’s position and rotation as animation proceeds (see the UIDynamicItem protocol)

  • You can programmatically update an item’s state in the midst of an animation, after which the animator takes back control of the item’s animation, relative to the state you specified (see the updateItemUsingCurrentState: method)

You can define composite behaviors using the addChildBehavior: method of the UIDynamicBehavior parent behavior class. The set of behaviors you add to an animator constitute a behavior hierarchy. Each behavior instance you associate with an animator can be present only once in the hierarchy.

To employ a dynamic animator, first identify the type of dynamic items you want to animate. This choice determines which initializer to call, and this in turn determines how the coordinate system gets set up. The three ways to initialize an animator, the dynamic items you can then use, and the resulting coordinate system, are as follows:

  • To animate views, create an animator with the initWithReferenceView: method. The coordinate system of the reference view serves as the coordinate system for the animator’s behaviors and items. Each dynamic item you associate with this sort of animator must be a UIView object and must descend from the reference view.

You can define a boundary, for items participating in a collision behavior, relative to the bounds of the reference view. See the setTranslatesReferenceBoundsIntoBoundaryWithInsets: method.

  • To animate collection views, create an animator with the initWithCollectionViewLayout: method. The resulting animator employs a collection view layout (an object of the UICollectionViewLayout class) for its coordinate system. The dynamic items in this sort of animator must be UICollectionViewLayoutAttributes objects that are part of the layout.

Вы можете определить границу для элементов, участвующих в коллизии, относительно границ макета представления коллекции. См. Метод setTranslatesReferenceBoundsIntoBoundaryWithInsets:.

Аниматор представления коллекции автоматически вызывает метод invalidateLayout по мере необходимости и автоматически приостанавливает и возобновляет анимацию при необходимости при изменении макета представления коллекции.

  • Чтобы использовать динамический аниматор с другими объектами, которые соответствуют протоколу UIDynamicItem, создайте аниматор с унаследованным методом init. В результате аниматор использует абстрактную систему координат, не привязанную к экрану или какому-либо виду.

Нет эталонной границы, на которую можно ссылаться при определении границы столкновения для использования с такого рода аниматором. Однако вы все равно можете указать настраиваемые границы в случае столкновения, как описано в справочнике по классу UICollisionBehavior.

Все типы динамических аниматоров имеют следующие характеристики:

  • Каждый динамический аниматор не зависит от других созданных вами динамических аниматоров.

  • Вы можете связать данный динамический элемент с несколькими поведениями, если эти поведения принадлежат одному и тому же аниматору.

  • Аниматор автоматически приостанавливает работу, когда все его элементы находятся в состоянии покоя, и автоматически возобновляет работу, когда параметр поведения изменяется или поведение или элемент добавляется или удаляется.

Вы можете реализовать делегат для ответа на изменения в статусе паузы / возобновления аниматора, используя методы dynamicAnimatorDidPause: и dynamicAnimatorWillResume: протокола UIDynamicAnimatorDelegate.

Ссылка: https://developer.apple.com/library/ios/documentation/uikit/reference/UIDynamicAnimator_Class/Reference/Reference.html