1

X 軸で UIImageView を 3D アニメーション化しようとしているので、180 度回転します。90度でイメージを変えたい。(そのため、2 でアニメーションを「中断」しました)。

アニメーションはうまく機能しますが、問題は 2 番目の画像が上下逆さまに描かれていることです。画像を正常に描画するにはどうすればよいですか?

これが私のコードです

    i++;
[UIView animateWithDuration:2 animations:^{

    self.imageView.layer.transform = CATransform3DMakeRotation(-M_PI/2 , 1, 0,0);

} completion:^(BOOL finished){

    UIImage *bottomI = (UIImage *)[bottom objectAtIndex:i];
    self.second.image =bottomI;

    [UIView animateWithDuration:2 animations:^{

          imageView.layer.transform = CATransform3DMakeRotation(M_PI , 1, 0,0);

    } completion:^(BOOL finised){   

    }];

}];
4

2 に答える 2

1

私が行ったこと (ビュー アニメーションの代わりにグループ化された CABasicAnimation オブジェクトを使用しますが、同じトリックが機能するはずです) は、ビュー/レイヤーを最初の 90 度回転させてから、アニメーションなしで 180 度回転させてから、アニメーションの後半を開始することです。こうすることで、アニメーションの後半で実際にビュー/レイヤーの前面が背面であるかのようにビューに回転しますが、後方には回転しません。

ビュー/レイヤーは、画像を切り替えて 180 度回転している間、ビューアに対して真横にあるため、ユーザーはこれらの変更を確認できません。残りの 90 度を回転すると、新しい画像が配置され、ビュー/レイヤーの裏側が表示されます。

それは完全に機能します。

于 2012-05-25T01:21:51.790 に答える
0

ビューを 3D 回転するときは、実際のオブジェクトを回転するのと似ています。したがって、回転が 90 度を超えると、オブジェクトが反転します。これが、2 番目の画像が反転している理由です。最も簡単な方法は、追加する前に画像のアフィン変換を設定して 180 度回転させることです。

編集:私の愚かさ....

私が意図したのはこれでした

bottomI.orientation = UIImageOrientationDown
于 2012-05-24T16:03:18.017 に答える