A UIGravity​Behavior object applies a gravity-like force to all of its associated dynamic items. The magnitude and direction of the gravity force are configurable and are applied equally to all associated items. Use this behavior to modify the position of views and other dynamic items in your app’s interface.


You specify the magnitude and direction of the gravity force as a two-dimensional vector in the reference view’s coordinate system. A value of 1.0 imparts the standard UIKit gravity, which corresponds to an acceleration of 1000 points / second² in the direction of the given axis. The default vector in the gravity​Direction property is (0.0, 1.0), which causes items to accelerate downward along the positive y axis. If you prefer to set the vector angle and magnitude separately, you can do so using the corresponding properties.

If you want to influence a gravity behavior at each step of a dynamic animation, assign an appropriate block to the inherited action property. Use your block to make any needed changes to the dynamic items associated with the gravity behavior.

Applying a Gravity Behavior to an Item

To apply a gravity behavior to one or more dynamic items, do the following:

  1. Initialize the behavior using the init(items:​) method, passing in the items you want associated with the behavior. Use the add​Item(_:​) method to add items after initialization. For more information about dynamic items, see UIDynamic​Item.

  2. Enable the gravity behavior by adding it to your UIDynamic​Animator object using the add​Behavior(_:​) method. (Do not add more than one gravity behavior to an animator.)

The gravity behavior derives its coordinate system from the reference view of its associated dynamic animator object. For more information about the dynamic animator and the reference coordinate system, see UIDynamic​Animator.


Initializing a Gravity Behavior

init(items:​ [UIDynamic​Item])

Initializes a gravity behavior with an array of dynamic items.

Managing a Gravity Behavior’s Items

var items:​ [UIDynamic​Item]

The set of dynamic items associated with the gravity behavior.

func add​Item(UIDynamic​Item)

Associates the specified dynamic item with the gravity behavior.

func remove​Item(UIDynamic​Item)

Removes the specified dynamic item from the gravity behavior.

Configuring a Gravity Behavior

var gravity​Direction:​ CGVector

The direction and magnitude of the gravitational force, expressed as a vector.

var angle:​ CGFloat

The direction of the gravity vector, expressed in radians in the reference coordinate system.

var magnitude:​ CGFloat

The magnitude of the gravity vector.

func set​Angle(CGFloat, magnitude:​ CGFloat)

Sets the angle and magnitude of the gravity vector for the behavior.