rotar rotacion plus pantalla girar gira desactivar ios iphone rotation position cabasicanimation

ios - rotacion - ¿Cómo obtener una posición perfecta de la vista giratoria?



rotar pantalla iphone 6 (2)

Para obtener los parámetros de la vista durante la animación, debe usar view.layer.presentationLayer

ADICIONAL:

Para obtener la coordenada de la esquina superior izquierda de la vista, use el siguiente código:

- (CGPoint)currentTopLeftPointOfTheView:(UIView *)view { CGRect rect = view.bounds; rect.origin.x = view.center.x - 0.5 * CGRectGetWidth(rect); rect.origin.y = view.center.y - 0.5 * CGRectGetHeight(rect); CGPoint originalTopLeftCorner = CGPointMake(CGRectGetMinX(rect), CGRectGetMinY(rect)); CGPoint rectCenter = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect)); CGFloat radius = sqrt(pow(rectCenter.x - originalTopLeftCorner.x, 2.0) + pow(rectCenter.y - originalTopLeftCorner.y, 2.0)); CGFloat originalAngle = M_PI - acos((rectCenter.x - originalTopLeftCorner.x) / radius); CATransform3D currentTransform = ((CALayer *)view.layer.presentationLayer).transform; CGFloat rotation = atan2(currentTransform.m12, currentTransform.m11); CGFloat resultAngle = originalAngle - rotation; CGPoint currentTopLeftCorner = CGPointMake(round(rectCenter.x + cos(resultAngle) * radius), round(rectCenter.y - sin(resultAngle) * radius)); return currentTopLeftCorner; }

El CGPoint resultante será la coordenada de la esquina superior izquierda de su vista (girada) relativa a su supervista.

Tengo una vista y estoy rotando esa vista usando CABasicAnimation . Ahora mi problema es cómo puedo obtener una posición perfecta de esa vista mientras rota. He intentado muchos tipos de códigos, pero no puedo obtener una posición perfecta durante la rotación de esa vista.

CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; NSNumber *currentAngle = [CircleView.layer.presentationLayer valueForKeyPath:@"transform.rotation"]; rotationAnimation.fromValue = currentAngle; rotationAnimation.toValue = @(50*M_PI); rotationAnimation.duration = 50.0f; // this might be too fast rotationAnimation.repeatCount = HUGE_VALF; // HUGE_VALF is defined in math.h so import it [CircleView.layer addAnimation:rotationAnimation forKey:@"rotationAnimationleft"];

Estoy usando este código para rotar mi vista.

También adjunté una foto de mi vista.

Gracias de antemano, por favor ayuda si lo sabes.