2012-01-16 122 views
1

如何旋转和翻译屏幕的一侧的UIImageView,然后从另一侧回来.. 可以说我有一个轮子,我想旋转和翻译从中间再关闭屏幕的左侧,然后从右侧和背部中间的“回来” ..旋转和翻译UIImageView在屏幕上

我用下面的代码进行旋转,并将其翻译关闭屏幕;

 CABasicAnimation* rotationAnimation; 
     rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
     rotationAnimation.toValue = [NSNumber numberWithFloat: -M_PI * 2.0 /* full rotation*/ * 2 * 1 ]; 
     rotationAnimation.duration = 1; 
     rotationAnimation.cumulative = YES; 
     rotationAnimation.repeatCount = 1.0; 
     rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 
     rotationAnimation.delegate = self; 

     CABasicAnimation* translationAnimation; 
     translationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; 
     translationAnimation.toValue = [NSNumber numberWithFloat:-700]; 
     translationAnimation.duration = 1; 
     translationAnimation.cumulative = YES; 
     translationAnimation.repeatCount = 1.0; 
     translationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 
     translationAnimation.removedOnCompletion = NO; 
     translationAnimation.fillMode = kCAFillModeForwards; 

不知道如果这是正确的路要走,所以请大家帮忙!

回答

3

试试这个,它会为你工作

CABasicAnimation* rotationAnimation; 
    rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
    rotationAnimation.toValue = [NSNumber numberWithFloat: -M_PI * 2.0 /* full rotation*/ * 2 * 1 ]; 
    rotationAnimation.duration = 1; 
    rotationAnimation.cumulative = YES; 
    rotationAnimation.repeatCount = 1.0; 
    rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 
    rotationAnimation.delegate = self; 

    CABasicAnimation* translationAnimation; 
    translationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; 
    translationAnimation.toValue = [NSNumber numberWithFloat:-700]; 
    translationAnimation.duration = 1; 
    translationAnimation.cumulative = YES; 
    translationAnimation.repeatCount = 1.0; 
    translationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 
    translationAnimation.removedOnCompletion = NO; 
    translationAnimation.fillMode = kCAFillModeForwards; 



    CAAnimationGroup *group = [CAAnimationGroup animation]; 
    group.animations = [NSArray arrayWithObjects:rotationAnimation,translationAnimation, nil]; 
    group.delegate = self; 
    group.removedOnCompletion = NO; 
    group.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 

    [[self.imageView.layer addAnimation:group forKey:@"randt"];