0

ユーザー入力に応じて UIImage を回転させる必要があります。これをできるだけ滑らかにしたいので、変換とレンダリングを実行する最も速い方法を知りたいです。理想的には、UIKit または Quartz フレームワーク内に留まりたいと考えています。画像のプロパティは次のとおりです。

  • サイズ 約 250x300 ピクセル
  • 不透明ではない - アルファ チャネルでレンダリングする必要がある

この機能を実装するためのベスト アプローチとプラクティスは何ですか?

注:このスタックオーバーフローの回答で説明されているアプローチがありますが、これが最適かどうかはわかりません。もちろんこれを試してみますが、これが「ベストプラクティス」と見なされるかどうか知りたいです。

4

2 に答える 2

6

コア アニメーション レイヤーを UIImage に適用するこの例は、インスピレーションを与えるかもしれません。

UIImage* rotatingImage = [UIImage imageNamed:@"someImage.png"];

CATransform3D rotationTransform = CATransform3DMakeRotation(1.0f * M_PI, 0, 0, 1.0);
CABasicAnimation* rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];

rotationAnimation.toValue = [NSValue valueWithCATransform3D:rotationTransform];
rotationAnimation.duration = 0.25f;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 10;

[rotatingImage.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
于 2009-06-22T13:26:44.850 に答える
1

UIImageView に UIImage を表示している場合、ビューに transform プロパティを設定しないのはなぜですか?

myimageView.transform = CGAffineTransformMakeRotation(<angle in radians>);

それはそれと同じくらい簡単で、これについて話しているような小さな画像の場合、これは非常にパフォーマンスが高いです.UIKitビューはすべてレイヤーでサポートされているため、ハードウェアアクセラレーションされています. このプロパティはアニメーション化も可能です。

于 2010-06-22T11:03:14.330 に答える