画像をドットの配列に沿って移動する最適な方法は何ですか?UIImageViewを移動する
答えて
最も簡単な方法は、用途UIView animations
あなたがあなたのポイントを保持するために、あなたのイメージとNSArrayのを保持するためにUIImageViewを使用することができますを前提と簡単な例にあります。私のお勧めのアプローチはUIImageViewにUIImageをラップし、あなたの三点を通る経路に沿って、あなたのUIImageViewの層をアニメーション化するCAKeyframeAnimationを使用することです
UIImage *image = [UIImage imageNamed:@"image.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
[someView addSubview:imageView]; // Assume someView exists
NSValue *firstPoint = [NSValue valueWithCGPoint:CGPointMake(0, 0)];
NSValue *secondPoint = [NSValue valueWithCGPoint:CGPointMake(100, 0)];
NSValue *thirdPoint = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
// And so on....
NSArray *points = [NSArray arrayWithObjects:firstPoint, secondPoint, thirdPoint, nil];
for (NSValue *pointValue in points) {
[UIView beginAnimations:@"UIImage Move" context:NULL];
CGPoint point = [pointValue CGPointValue];
CGSize size = imageView.frame.size;
imageView.frame = CGRectMake(point.x, point.y, size.width, size.height);
[UIView commitAnimations];
}
:デフォルトであること
UIImage *image = [UIImage imageNamed:@"image.png"];
imageView = [[UIImageView alloc] initWithImage:image];
[mainView addSubview:imageView];
// Remember to remove the image view and release it when done with it
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.duration = 1.0f;
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;
CGMutablePathRef pointPath = CGPathCreateMutable();
CGPathMoveToPoint(pointPath, NULL, viewOrigin.x, viewOrigin.y);
CGPathAddLineToPoint(pointPath, NULL, point1.x, point1.y);
CGPathAddLineToPoint(pointPath, NULL, point2.x, point2.y);
CGPathAddLineToPoint(pointPath, NULL, point3.x, point3.y);
pathAnimation.path = pointPath;
CGPathRelease(pointPath);
[imageView.layer addAnimation:pathAnimation forKey:@"pathAnimation"];
注意、レイヤの位置はレイヤの中央にあります。レイヤーを別の参照ポイントに相対的に移動したい場合は、レイヤーのanchorPointプロパティを左上隅の(iPhoneの場合)(0.0、0.0)、下層の場合の(0.0、1.0)左。
また、これでUIImageViewのフレームが変更されることはありません。後でそのフレームを参照する場合は、そのことを考慮に入れるか、デリゲートメソッドのコールバックを追加する必要がありますアニメーションを適切な値に設定します。
CGPathAddLineToPoint()の呼び出しをCGPathAddCurveToPoint()に置き換えることで、直線ではなく曲線に沿って画像を移動することもできます。
EDIT(5/14/2009):欠落しているpathAnimation.path = pointPath行を追加し、curvePathの誤った参照をpointPathに変更しました。
これは正解です –
私はこのアニメーションも実行されていないように遅れを引き起こしている(マルチスレッド)の処理をたくさん持っている、それはちょうど非常にジャンプ... CAKeyFrameAnimationをスレッドに配置する方法はありますか実行することを最優先にしますか? –
- 1. アニメーションを含むUIImageViewを移動する
- 2. 複数のUIImageViewオブジェクトを移動する
- 3. 移動中にUIImageViewをロックする
- 4. TouchでUIImageViewを移動する方法
- 5. UIImageViewを左から中央に移動
- 6. UIScrollViewズーム移動UIImageViewは画像を左上隅に移動します
- 7. CGAffineTransformRotateを適用した後にUIImageViewを移動する
- 8. UIImageViewの移動時に画面の端を検出する
- 9. CGIIの外に移動したときにUIImageViewをクリップする
- 10. UIImageViewを円周の周りに移動しますか?
- 11. 移動方向に応じてUIImageViewを回転させます
- 12. UIImageViewを移動する最も効率的な方法は何ですか?
- 13. UITableViewCell UIImageViewは同じテーブルの異なるセル間を移動します
- 14. 別のUIImageViewでUIImageViewをマスクする
- 15. UIImageViewにUIImageViewをプログラムで追加する
- 16. エージェントが移動ノードを移動する
- 17. UIImageView animationImages奇妙な動作
- 18. UIImageViewのサブビューの自動ローテーション
- 19. UIImageViewを他のViewControllerに移動するにはどうすればいいですか?
- 20. ピンチで移動して移動する
- 21. 幅と高さの制約を設定するときに、UIImageViewがセルの左上に移動します。
- 22. 画像ビューを移動するパスを移動する
- 23. 動的にUIImageViewの名前を書く
- 24. 移動コンストラクタ移動元クラス移動コンストラクタ
- 25. UIImageViewが実行時に元の場所(インタフェースビルダー)から移動するのはなぜですか?
- 26. SVG.js直線を移動して直線を移動する
- 27. UITableViewCellでUIImageViewを動的に追加する
- 28. UIImageView iOSで起動イメージセットを使用するには?
- 29. 複数のUIImageViewにテキストを動的にラップする
- 30. UIImageViewで起動画像を使用する
実際には、3つの動作を同時に開始するため、正しく動作しません。アニメーションはバックグラウンドスレッドで実行され、完了するのを待つ必要があります。パスに沿って移動するのではなく、アニメーションの動作は予測できません。 –
何も言えません、あなたは正しいです! – klaaspieter