Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<pre><code>#import "RotationTestViewController.h" @interface RotationTestViewController() -(void)transformSpinnerwithTouches:(UITouch *)touchLocation; -(CGPoint)vectorFromPoint:(CGPoint)firstPoint toPoint:(CGPoint)secondPoint; -(void)animateView:(UIView *)theView toPosition:(CGAffineTransform) newTransform; @end @implementation RotationTestViewController - (void)viewDidLoad { [super viewDidLoad];} -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { for (UITouch *touch in touches) { // Send to the dispatch method, which will make sure the appropriate subview is acted upon // currentTouch=touch; } } -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { for (UITouch *touch in touches){ // Sends to the dispatch method, which will make sure the appropriate subview is acted upon } } -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch=[[event allTouches]anyObject]; if (touch.view==Spinner) { [self transformSpinnerwithTouches:touch]; } } -(void)transformSpinnerwithTouches:(UITouch *)touchLocation { CGPoint touchLocationpoint = [touchLocation locationInView:self.view]; CGPoint PrevioustouchLocationpoint = [touchLocation previousLocationInView:self.view]; //origin is the respective piont from that i gonna measure the angle of the current position with respective to previous position .... CGPoint origin; origin.x=Spinner.center.x; origin.y=Spinner.center.y; CGPoint previousDifference = [self vectorFromPoint:origin toPoint:PrevioustouchLocationpoint]; CGAffineTransform newTransform =CGAffineTransformScale(Spinner.transform, 1, 1); CGFloat previousRotation = atan2(previousDifference.y, previousDifference.x); CGPoint currentDifference = [self vectorFromPoint:origin toPoint:touchLocationpoint]; CGFloat currentRotation = atan2(currentDifference.y, currentDifference.x); CGFloat newAngle = currentRotation- previousRotation; temp1=temp1+newAngle; NSLog(@"Angle:%F\n",(temp1*180)/M_PI); newTransform = CGAffineTransformRotate(newTransform, newAngle); [self animateView:Spinner toPosition:newTransform]; } -(void)animateView:(UIView *)theView toPosition:(CGAffineTransform) newTransform { [UIView setAnimationsEnabled:YES]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationCurve:UIViewAnimationCurveLinear]; [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationDuration:0.0750]; Spinner.transform = newTransform; [UIView commitAnimations]; } //-(CGFloat)distanceFromPoint:(CGPoint)fromPoint toPoint:(CGPoint)toPoint // //{ //float x = toPoint.x - fromPoint.x; //float y = toPoint.y - fromPoint.y; //return hypot(x, y); //} -(CGPoint)vectorFromPoint:(CGPoint)firstPoint toPoint:(CGPoint)secondPoint { CGFloat x = secondPoint.x - firstPoint.x; CGFloat y = secondPoint.y - firstPoint.y; CGPoint result = CGPointMake(x, y); //NSLog(@"%f %f",x,y); return result; } -(void) dealloc { [Spinner release]; [super dealloc]; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload