2014-09-26 69 views

回答

1

其我的解決方案:

- (void)startAnimation 
{ 
[UIView animateWithDuration:.4 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ 
    [self.loadingRingImageView setTransform:CGAffineTransformRotate(self.loadingRingImageView.transform, M_SQRT2)]; 
}    completion:^(BOOL finished) { 
    if (finished) 
    { 
     [self startAnimation]; 
    } 
}]; 
} 
+0

這個代碼中的圖像在哪裏? – 2014-09-26 07:11:59

+0

我認爲它不是正確的解決方案? – 2014-09-26 07:17:46

+1

self.loadingRingImageView is UIImageView – Bimawa 2014-09-26 07:29:03

1
[[self.<imageviewinstance> layer] addAnimation:[self rotationAnimation] forKey:nil]; 

添加上面的動畫,下面是動畫代碼。

- (CABasicAnimation *)rotationAnimation 
{ 
    CABasicAnimation *rotAnim = [CABasicAnimation animationWithKeyPath:@"position"]; 
    [rotAnim setFromValue:[NSValue valueWithCGPoint:CGPointMake(100.0, 400.0)]]; 
    rotAnim.toValue = [NSValue valueWithCGPoint:CGPointMake(300.0, 150.0)]; 
    // rotAnim.duration = 5.0; 
    rotAnim.autoreverses = YES; 
    // rotAnim.repeatCount = HUGE_VAL; 
    rotAnim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    return rotAnim; 
} 

如果上面沒有奏效使用該

- (CABasicAnimation *)rotationAnimation 
    { 
    CABasicAnimation *move = [CABasicAnimation animationWithKeyPath:@"transform.rotation" ]; 
    move.delegate = self; 
    [move setFromValue:[NSNumber numberWithFloat:0]]; 
    [move setToValue:[NSNumber numberWithFloat:50]]; 
    [move setDuration:10.0f]; 
    move.autoreverses = YES; 
} 
+0

哪裏寫這個代碼? – 2014-09-26 07:22:15

+0

imageviewinstance in [[self。 layer] addAnimation:[self rotationAnimation] forKey:nil];在這裏給錯誤 – 2014-09-26 07:33:40

0

的問題,我想知道的答案是 - >

UIImageView *imageViewForAnimation = [[UIImageView alloc] initWithImage:imageToAnimate]; 
    imageViewForAnimation.alpha = 1.0f; 
    CGRect imageFrame = imageViewForAnimation.frame; 
    //Your image frame.origin from where the animation need to get start 
    CGPoint viewOrigin = imageViewForAnimation.frame.origin; 
    viewOrigin.y = viewOrigin.y + imageFrame.size.height/2.0f; 
    viewOrigin.x = viewOrigin.x + imageFrame.size.width/2.0f; 

    imageViewForAnimation.frame = imageFrame; 
    imageViewForAnimation.layer.position = viewOrigin; 
    [self.view addSubview:imageViewForAnimation]; 

// Set up fade out effect 
CABasicAnimation *fadeOutAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
[fadeOutAnimation setToValue:[NSNumber numberWithFloat:0.3]]; 
fadeOutAnimation.fillMode = kCAFillModeForwards; 
fadeOutAnimation.removedOnCompletion = NO; 

// Set up scaling 
CABasicAnimation *resizeAnimation = [CABasicAnimation animationWithKeyPath:@"bounds.size"]; 
[resizeAnimation setToValue:[NSValue valueWithCGSize:CGSizeMake(40.0f, imageFrame.size.height * (40.0f/imageFrame.size.width))]]; 
resizeAnimation.fillMode = kCAFillModeForwards; 
resizeAnimation.removedOnCompletion = NO; 

// Set up path movement 
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
pathAnimation.calculationMode = kCAAnimationPaced; 
pathAnimation.fillMode = kCAFillModeForwards; 
pathAnimation.removedOnCompletion = NO; 
//Setting Endpoint of the animation 
CGPoint endPoint = CGPointMake(480.0f - 30.0f, 40.0f); 
//to end animation in last tab use 
//CGPoint endPoint = CGPointMake(320-40.0f, 480.0f); 
CGMutablePathRef curvedPath = CGPathCreateMutable(); 
CGPathMoveToPoint(curvedPath, NULL, viewOrigin.x, viewOrigin.y); 
CGPathAddCurveToPoint(curvedPath, NULL, endPoint.x, viewOrigin.y, endPoint.x, viewOrigin.y, endPoint.x, endPoint.y); 
pathAnimation.path = curvedPath; 
CGPathRelease(curvedPath); 

CAAnimationGroup *group = [CAAnimationGroup animation]; 
group.fillMode = kCAFillModeForwards; 
group.removedOnCompletion = NO; 
[group setAnimations:[NSArray arrayWithObjects:fadeOutAnimation, pathAnimation, resizeAnimation, nil]]; 
group.duration = 0.7f; 
group.delegate = self; 
[group setValue:imageViewForAnimation forKey:@"imageViewBeingAnimated"]; 

[imageViewForAnimation.layer addAnimation:group forKey:@"savingAnimation"];