15.15. Animating and Rotating Views

Problem

You want to animate the rotation of your views.

Solution

Create a rotation affine transform and use the animation methods of UIView to animate the rotation.

Discussion

Note

I highly recommend that you read Recipe 15.13 before proceeding with this section of the book.

In order to rotate a view while animating it, you must apply a rotation transformation to it while in an animation block (see Recipe 15.11). Let’s have a look at some sample code that will make this clearer. Let’s say we have an image named Xcode.png (see Figure 15-14), and we want to display it in the center of the screen. After the image is displayed, we want to rotate it 90 degrees over a five-second time period and then rotate it back to its original orientation. So when the view appears on the screen, let’s rotate the image view 90 degrees clockwise:

- (void) viewDidAppear:(BOOL)paramAnimated{
  [super viewDidAppear:paramAnimated];
  
  self.xcodeImageView.center = self.view.center;
  
  /* Begin the animation */
  [UIView beginAnimations:@"clockwiseAnimation"
                  context:NULL];
  
  /* Make the animation five seconds long */
  [UIView setAnimationDuration:5.0f];
  
  [UIView setAnimationDelegate:self];
  
  [UIView setAnimationDidStopSelector:
   @selector(clockwiseRotationStopped:finished:context:)];
  
  /* Rotate the image view 90 degrees */
  self.xcodeImageView.transform =
  CGAffineTransformMakeRotation((90.0f * M_PI) / 180.0f);
    /* Commit the animation */
  [UIView commitAnimations];
  
}

We’ve chosen the clockwiseRotationStopped:finished:context: ...

Get iOS 5 Programming Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.