2011-04-20 9 views
0

UIImageViewを最初に回転させてフレームをアニメーション化すると、現在問題が発生しています。そのフレームをtarget_positionにアニメーション化するとすぐに、画像のサイズが変更されます。それはUIViewでフレームを変更してUIImageViewを回転するアニメーションでサイズが変更される

私は現在の回転のために使用するコードがある(回転角度に応じた)のは広いと高い取得:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    if (!isAnimating) { 
     isAnimating = YES; 
     UITouch *t = [[touches allObjects] lastObject]; 

     float angle = atan2([t locationInView:self.view].y - player.frame.origin.y, [t locationInView:self.view].x - player.frame.origin.x) * 180/M_PI; 
     NSLog(@"Angle: %f", angle); 

     CGAffineTransform cgCTM = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(angle)); 

     [player setTarget_position:CGRectMake([t locationInView:self.view].x, [t locationInView:self.view].y, player.image.size.width-angle, player.image.size.height+angle)]; 

     [UIView beginAnimations:@"rotatePlayer" context:nil]; 
     [UIView setAnimationDuration:2]; 
     player.transform = cgCTM; 
     [UIView setAnimationDelegate:self]; 
     [UIView setAnimationDidStopSelector:@selector(playerFinishedRotating)]; 
     [UIView commitAnimations]; 
    } 
} 

回転自体は正常に動作します。そして、これはplayerFinishedRotating関数のコードです:私にとって

- (void)playerFinishedRotating { 
    [UIView beginAnimations:@"rotatePlayer" context:nil]; 
    [UIView setAnimationDuration:3]; 
    [player setFrame:[player target_position]]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(playerFinishedAnimating)]; 
    [UIView commitAnimations]; 
} 

それは私のUIImageVieの変化の大きさは、それを回転させながら、その種の論理です。しかし、私はどのように与えられたデータ(回転角度f.e.)で私のtarget_positionフレームの幅と高さの値を調整するには固執しています。

他の人のための答えは明白かもしれので、私は数学の天才ないんだけど、私にとって、それはありません:(

ホープ誰かが助けることができますし、さらに質問がありましたら、コメントをLEVEしてください。

答えて

関連する問題