2016-08-24 4 views
-1

回転しているUIViewのスクリーンショットを取得しようとしています。これは私のコードであるUIViewからUIImageへの変換が正しく機能しない

-(void)rotateImage:(int)radian 
{ 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.3]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 

// The transform matrix 
CGAffineTransform transform = CGAffineTransformRotate(self.baseImageView.transform, M_PI/2 * radian); 
self.baseImageView.transform = transform; 
} 

-(NSData *)getData 
{ 

UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO,0.0); 
[self.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
return UIImageJPEGRepresentation(img, 1.0); 
} 

スクリーンショットが正常に作成されますが、その後、私は存在するすべてのviewcontrollersは左上から提示され、ビューが&不正な動作をバウンス。しかし、私は画像を回転させずにスクリーンショットを作成する場合、すべてが問題ありません。私はそれに取り組まれていて、何か助けに感謝しています。

注:既にUIGraphicsBeginImageContextWithOptionsパラメータを変更しようとしました。私のプロジェクトはARCを使用していません。

+4

あなたは '[UIView commitAnimations];を呼び出しますか? – beyowulf

+0

無関係ですが、なぜあなたはARCを使用していませんか?それはちょうど愚かです。 – rmaddy

+0

そしてなぜ 'beginAnimations'を使用していますか?あなたがiOS 3に住んでいるような感じです。 – matt

答えて

0

アニメーションが正しく処理されなかったことが判明しました。問題を解決するためにこれをやりました。

[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationCurveEaseIn animations:^{ 
    CGAffineTransform transform = CGAffineTransformRotate(self.baseImageView.transform, M_PI/2 * radian); 
    self.baseImageView.transform = transform; 
} completion:nil]; 
関連する問題