DennisW83
DennisW83

Reputation: 11

UIImageView animated rotation

I would like to rotate an UIImageView clockwise around his center after pressing a button (360 degrees)... It should be an animation... So its getting a steering wheel, and it should rotate by itself visible for the user...

I saw there are many ways to do that, but nothing worked for me... :-)

The CABasicAnimation, do I have to add a framework for this?

Could someone give me a sample code, for rotating an UIImageView around its center for (360 degrees) that works?!?

thank you in advance

Upvotes: 0

Views: 3093

Answers (3)

Yunus Nedim Mehel
Yunus Nedim Mehel

Reputation: 12369

Upon button press invoke this method:

- (void) animate{

CABasicAnimation *imageRotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
imageRotation.removedOnCompletion = NO; // Do not turn back after anim. is finished
imageRotation.fillMode = kCAFillModeForwards;

imageRotation.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)];

imageRotation.duration = 1.5;
imageRotation.repeatCount = 1;

[yourImageView.layer setValue:imageRotation.toValue forKey:imageRotation.keyPath];
[yourImageView.layer addAnimation:imageRotation forKey:@"imageRotation"];

}

and yes as WrightsCS has stated, you will need QuartzCore framework included in your project. Dont forget the import statement:

#import <QuartzCore/QuartzCore.h>

Upvotes: 0

WrightsCS
WrightsCS

Reputation: 50697

You need to add the QuartzCore framework, and you can read more about CABasicAnimation.

Some Tutorials

Interrupting Animation Progress

Slider Based Layer Rotation

CABasicAnimation basics

Core Animation Paths

Upvotes: 0

Nag_iphone
Nag_iphone

Reputation: 967

Hear given below i do same thing ...... but my requirement is when touchBegin that View will be rotate 360 degree ... it may help to you.....

 - (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {

    self.userInteractionEnabled=YES;
[UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
[UIView setAnimationBeginsFromCurrentState:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self   cache:YES];
   [UIView commitAnimations];
  [delegate changeImage:self];

 }
 -(void)changeImage:(DraggableImages *)selectedView
 {
count++;
clickCounter++;
counterLable.text=[NSString stringWithFormat:@"%i",clickCounter];
selectedView.image=[images objectAtIndex:selectedView.tag];
if (count==1) {
    firstSelectedView=selectedView;
}
if (count==2) {
    self.view.userInteractionEnabled=NO;
    secondSelectedView=selectedView;
    count=0;
    [self performSelector:@selector(compareImages) withObject:nil     afterDelay:0.7];
}

}
  -(void)compareImages
 {
if (firstSelectedView.tag==secondSelectedView.tag) 
{
    matches++;
    //NSLog(@"%@",matches);
    Score=Score+10;
    scoreLable.text=[NSString stringWithFormat:@"%d",Score];

    firstSelectedView.alpha=0.5;
    secondSelectedView.alpha=0.5;
    self.view.userInteractionEnabled=YES;
    if(matches==[images count])
    {

        [timer invalidate];
        UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:nil message:[NSString stringWithFormat:@"Do you want to countinue?"] delegate:self cancelButtonTitle:nil otherButtonTitles:@"YES",@"NO", nil];
        [alertView show];
        [alertView release];

    } 
}

else {
    Score=Score-1;
    scoreLable.text=[NSString stringWithFormat:@"%d",Score];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationBeginsFromCurrentState:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:firstSelectedView cache:YES];
    firstSelectedView.image=[UIImage imageNamed:@"box.jpg"];
    [UIView commitAnimations];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationBeginsFromCurrentState:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:secondSelectedView cache:YES];
    secondSelectedView.image=[UIImage imageNamed:@"box.jpg"];
    [UIView commitAnimations];
    firstSelectedView.userInteractionEnabled=YES;
    secondSelectedView.userInteractionEnabled=YES;
    self.view.userInteractionEnabled=YES;





}

}

Upvotes: 1

Related Questions