2016-01-13 13 views
8

Ich benutze CABasicanimation für eine UIView zu drehen. Ich verwende diesen Code,Wie bekomme ich die perfekte X, Y Position der rotierenden UIView in IOS

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"]; 

in diesem ich will perfekte X, Y-Position, während "UIView" dreht. Wenn jemand weiß, bitte hilf mir.

Vielen Dank im Voraus. enter image description here

+0

Können Sie Bitte erläutern Sie ein wenig mehr, was Sie mit der perfekten x- und y-Position meinen und wie Sie Ihre Ansicht drehen müssen? Soll es in der Z-Achse rotieren (also im 3D-Raum?). – Tuslareb

+0

Eigentlich rotiere ich meine UIView sowohl auf der Seite als auch auf dem Click-Event und wenn diese UIView rotiert, möchte ich eine perfekte Position der UIView, an welcher Position sie tatsächlich ist. –

+0

Ich möchte eine Position in der Art von (X, Y) –

Antwort

0

Also, wenn ich Sie richtig verstehe, wollen Sie nur die X- und Y-Koordinaten Ihrer Ansicht während der Rotation erhalten?

Sie können dies tun, indem sie den Rahmen des presentationLayer Protokollierung, wie folgt aus:

- (IBAction)buttonAction:(UIButton *)sender { 

    CGRect position = [[CircleView.layer presentationLayer] frame]; 
    NSLog(@"%@", NSStringFromCGRect(position)); 
} 
+0

Hallo Freund Danke für Ihre Antwort, aber das gibt mir keine perfekte Position –

+1

Ich habe versucht, Ihren Code und meine Antwort, Sie haben Recht, die Präsentationsebene gibt nicht die richtigen Koordinaten in der Superviews Koordinatenraum. In diesem Moment verstehe ich nicht warum. Ich werde darauf zurückkommen, wenn ich es herausfinde. – Tuslareb

+0

Ok Danke Bitte sagen Sie mir, wenn Sie eine Idee haben. –