title: iPhone animation problem SImulator vs Real Device
body: <p>This is my first question her so please be gentle:
  I have followig animation code running smoothly on the simulator as well as on the real device (I am testng on iPhone 3GS 3.1.2).
  Animation is a simple transition between the 2 views, something like book page flipping.</p>
  
  <p>One diffrence betwen simulator an real device (The problem I cannot investigate - solve) is that on real device when animation finishes - after rotation has been done animated view blink (show for a split of second) for a moment before it goes hidden. On the simulator this 'unexpected' blink does not happen.</p>
  
  <p>Here is the animation code:</p>
  
  <pre><code>-(void)flip{
      UIView *animatedView;
  
      // create an animation to hold the page turning
      CABasicAnimation *transformAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
      transformAnimation.removedOnCompletion = NO;
      transformAnimation.delegate = self;
      transformAnimation.duration = ANIMATION_TIME;
      transformAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
  
      // this is the basic rotation by 90 degree along the y-axis
      CATransform3D endTransform = CATransform3DMakeRotation(3.141f/2.0f,
                                                             0.0f,
                                                             -1.0f,
                                                             0.0f);
      // these values control the 3D projection outlook
      endTransform.m34 = 0.001f;
      endTransform.m14 = -0.0015f;
  
  
      // start the animation from the current state
      transformAnimation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
      transformAnimation.toValue = [NSValue valueWithCATransform3D:endTransform];
      animatedView = screenShot;
  
      // Create an animation group to hold the rotation and possibly more complex animation in the future
      CAAnimationGroup *theGroup = [CAAnimationGroup animation];
  
      // Set self as the delegate to receive notification when the animation finishes
      theGroup.delegate = self;
      theGroup.duration = ANIMATION_TIME;
      // CAAnimation-objects support arbitrary Key-Value pairs, we add the UIView tag
      // to identify the animation later when it finishes
      [theGroup setValue:[NSNumber numberWithInt:animatedView.tag] forKey:@"animated"];
      // Here you could add other animations to the array
      theGroup.animations = [NSArray arrayWithObjects:transformAnimation,nil];
      theGroup.removedOnCompletion = NO;
      // Add the animation group to the layer
      if (animatedView.layer.anchorPoint.x != 0.0f) 
      {
          animatedView.layer.anchorPoint = CGPointMake(0.0f, 0.5f);
          float yy = animatedView.center.x - (animatedView.bounds.size.width / 2.0f);
          animatedView.center = CGPointMake(yy, animatedView.center.y);
      }
  
      if(![animatedView isDescendantOfView:self.view])[self.view addSubview:animatedView];
      screenShot.hidden = NO;
      animatedView.hidden = NO;
  
  
      [animatedView.layer addAnimation:theGroup forKey:@"flip"];
  
  }
  
  - (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag {
  
      screenShot.hidden = YES;
  
  }
  </code></pre>