O'Reilly logo

iOS 7 Programming Cookbook by Vandad Nahavandipoor

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

2.6. Assigning Characteristics to Your Dynamic Effects

Problem

You like the default physics built into the dynamic behaviors of UIKit, but you want to be able to assign different characteristics, such as mass and elasticity, to various items that you control using dynamic behaviors.

Solution

Instantiate an object of type UIDynamicItemBehavior and assign your dynamic items to it. Once instantiated, use the various properties of this class to change the characteristics of your dynamic items. Then add this behavior to your animator (see Recipe 2.0) and let the animator take care of the rest for you.

Discussion

Dynamic behaviors are great for adding real-life physics to items that conform to the UIDynamicItem protocol, such as all views of type UIView. In some apps, though, you may wish to explicitly specify the characteristics of a specific item. For instance, in an app where you are using gravity and collision behaviors (see Recipe 2.1 and Recipe 2.2), you may wish to specify that one of the items on your screen affected by this gravity and the collision has to bounce harder than the other item when it collides with a boundary. Another example is when you want to specify that an item, during all the different dynamic animations that will be applied to it with an animator, should not rotate at all.

These are all easily doable when you use instances of the UIDynamicItemBehavior class. These instances are dynamic behaviors too, and you can add them to an animator using the addBehavior: instance ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required