rotar poner plano mvsetup modelo horizontal girar espaƱol espacio como comando alinear objective-c uiview rotation cgaffinetransform

objective c - poner - Girar vista usando CGAfffineTransformRotate



rotar en autocad 3d (2)

#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]; }

Tengo una imagen circular que estoy tratando de rotar, de modo que el círculo rayado amarillo y negro permanezca debajo del dedo del usuario y gire en ambas direcciones. Tengo esto hasta ahora:

- (void)handleJogShuttle:(UIPanGestureRecognizer *)recognizer { UIView *shuttle = [recognizer view]; if ([recognizer state] == UIGestureRecognizerStateBegan || [recognizer state] == UIGestureRecognizerStateChanged) { [recognizer view].transform = CGAffineTransformRotate([[recognizer view] transform],M_PI / 20.0f); [recognizer setTranslation:CGPointZero inView:[shuttle superview]]; } }

http://img227.imageshack.us/img227/2396/jog2.png

Además, actualmente, el más mínimo movimiento puede hacer que la vista gire en un círculo completo, lo que obviamente no es deseable.


Sospecho que este método se llama MUCHO. Intente usar NSLog y verifique cuántas veces lo hace. De todos modos, no estás calculando el ángulo correctamente, podrías intentar usar

-(CGPoint)translationInView:(UIView *)view

desde el reconocedor para calcular el ángulo correcto para rotar.