• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Xcode - 連続したアニメーションの繰り返し)

Xcode - 連続したアニメーションの繰り返し

このQ&Aのポイント
  • Xcodeで連続したアニメーションを繰り返す方法について困っています。
  • Objective-Cのコードを使用して、2つの連続したアニメーションを実行していますが、繰り返す方法がわかりません。
  • 現在、UIViewのanimateWithDurationメソッドを使用してアニメーションを実行していますが、指定したアニメーションを繰り返すことができません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

1つ目のアニメーションを行うメソッドをanime1とし 2つ目のアニメーションを行うメソッドをanime2とし それぞれのアニメーションのcompletionで他方の アニメーションメソッドを呼べばよいと思います。 次のような感じです。 - (void) anime1 { [UIView animateWithDuration:0.5f delay:0.5f options:UIViewAnimationCurveLinear animations:^{ // 1つ目のアニメーション : : } completion:^(BOOL finished) { [self anime2]; }]; } - (void) anime2 { [UIView animateWithDuration:0.5f delay:0.5f options:UIViewAnimationCurveLinear animations:^{ // 2つ目のアニメーション : : } completion:^(BOOL finished) { [self anime1]; }]; }

jin7vwh7
質問者

お礼

早速ありがとうございます。 各アニメーションをメソッド化し、最後アニメーションのcompletionで最初のアニメーションメソッドを呼べば良いのですね。この方が流れがわかりやすくなって良いですね! 早速実装させていただきます。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • [Objective-C]アニメーション

    Xcode 4.5.2を使用して、Objective-CでiPhoneアプリの開発を行っています。 UIView(viewAとします)のsubViewとして 3つのUIButton(btn1, btn2, btn3とします)を配置し、 「animateWithDuration:delay:options:animations:completion:」メソッドを使用して viewAごと移動させるアニメーションを実行しようとしています。 btn1~btn3のタップイベントを実装したいのですが アニメーション実行中はbtn1~btn3のタップイベントが受け付けられません。 「animateWithDuration:delay:options:animations:completion:」メソッドの「option:」に 「UIViewAnimationOptionAllowUserInteraction」を指定してみたのですが それでもだめです。 原因が分かる方、いらっしゃいましたら教えていただけないでしょうか? 初歩的な質問で申し訳ありません。。 (ソース) ※画面はstoryboardで作成しています。 //アニメーション設定 [UIView animateWithDuration:5.0f delay:0.5 options:UIViewAnimationOptionCurveLinear |UIViewAnimationOptionAllowUserInteraction animations:^{ //移動 [self.viewA setFrame:CGRectMake(0, 330, 320, 60)]; } completion:^(BOOL finished) { //処理 } ];

  • Objective-Cの繰返しアニメーション

    [UIView animateWithDuration: 1 delay: 0.0 options: UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat animations: ^{image.alpha = 0;} completion: ^(BOOL finished){image.alpha = 0;} ]; 上のコードは imageという画像を永遠に点滅させるコードですが、 例えば3回のみ点滅させるのはどのようなパラメータを入れたらいいのでしょうか? 消える→表示→消える→表示→消える のような挙動を、 入れ子構造での複雑な方法ではできたのですが、 すっきりしたコードが書けなくて困っています。 よろしくお願い致します。

  • Objective-Cのメソッド効率化

    下のコードは UIButton のbutton1を押すと そのボタン自身が一回だけ10px上に移動し、 戻るコードです。 例えばこのボタンがひとつだけでなく 10個ある場合を考えて - (IBAction)move2 { int x = button2.center.x; int y = button2.center.y; ~~~ } と10個記述していくのではなく、 うまく関数化したいのですが どのような式を考えたら良いのでしょうか? よろしくお願い致します。 - (IBAction)move1 { int x = button1.center.x; int y = button1.center.y; [UIView animateWithDuration:0.2f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ button1.center = CGPointMake(x, y-10); } completion:^(BOOL finished){ [UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ button1.center = CGPointMake(x, y); } completion:^(BOOL finished){ }]; }]; }

  • Xcodeで開発してますが。。

    CGAffineTransformMakeScalの動きがおかしいです。 下記コード一部抜粋しています。5行目です。 Xcodeは Version 5.1.1 です ----- ボタンが押されると、numericButtonPressedを実行し、途中で [self animateButton:button];により拡大/縮小のアニメーションをつけるプログラムです。 ----- アニメーションでX方向/Y方向に2倍拡大はできるのですが、左上からの座標も指定した分だけ ずれてしまいます。 button.center = CGPointMake(0, 0);を挿入したりしてもダメです。 CGAffineTransformMakeScaleの仕様なのか、プログラムがおかしいのかわかりません どう対処すればよいか、教えてください。 ◆◆◆◆コード一部抜粋 - (void)animateButton:(UIButton*)button { [UIView animateWithDuration:1 animations:^{ // 位置までずれてしまう。。。 button.transform = CGAffineTransformMakeScale(2, 2); } completion:^(BOOL complete){ [UIView animateWithDuration:1 animations:^{ button.transform = CGAffineTransformIdentity; } ]; } ]; } - (IBAction)numericButtonPressed:(id)sender { UIButton *button = (UIButton*)sender; [self animateButton:button]; // 拡大/縮小のアニメーション NSString *numericChar = button.titleLabel.text; int number = [numericChar intValue]; if ([opString isEqualToString:@"="]) { calcValue = 0; opString = nil; } calcValue = calcValue * 10 + number; opApplied = NO; [self updateResultLabel]; } ◆◆◆◆

  • subを連続で実行する

    http://okwave.jp/qa/q8901279.html このページで外部資源を用いないと変数を保存できないことを教えていただきました。 それと関連した別の質問なのですが あるsub 1を実行し、それの終了とともに別のsub 2を実行したいのですが call subを使う方法だと必ずsubの中で別のsubを呼び出すかたちになってしまいます。 subを入れ子にせずに、subを連続で使う方法はありますか? sub 3を作成し、そこにsub1とsub2を入れるというのも無しです。 よろしくお願いいたします。

  • スクロールの上でラベルをドラッグする方法について

    現在、左右スクロールと上下フリックができるViewをタップすることでラベルがでてきて、そのラベルをドラッグできるようなコードを作っています。 具体的には、ViewController のViewの上に、画像を左右にScrollできるView(ScrollView)をのせ、その上に、それらの画像を上下にフリックすると別の画像がでてくるようなView(PageView、親クラスがUISrollView)を作成しています。 そこで、上下のフリック、スクロール、タップでラベルがでてくるのはできるようになったのですが、ラベルを認識してドラッグができる(UIPanGestureRecognizer)というのができません。 もし、おわかりになられる方がいらっしゃいましたら、お手数をおかけしますがご教授頂けたら幸いです。 以下、コードです。 xcodeは5.0です。 これらはViewContorllerの中に書いてあります。 //ScrollViewの上にPageViewクラスで作ったpageを乗せてスクロールしています。pageには画像をいれています。 for (int i=1;i<4;i++) { PageView *page = [[PageView alloc] initWithFrame:self.view.bounds]; page.delegate=self; [page setImage:[NSString stringWithFormat:@"%d",i]]; page.frame = CGRectMake( self.view.frame.size.width * (i-1), 0, self.view.frame.size.width, self.view.frame.size.height ); [scrollView addSubview:page]; //pageにタップしてproductLabelがでてくるようにしています。 [page addGestureRecognizer: [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrlTapREcotTap:)]]; NSLog(@"tap"); //ここでラベルのproductLabelだけに触れてドラッグできるようにしたいのですが、ドラッグができません。 UIPanGestureRecognizer *pan =[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanGesture:)]; [productLabel addGestureRecognizer:pan]; NSLog(@"drag"); }} //ラベルをタップにより表示したり、非表示にしたりしています。 - (void)scrlTapREcotTap:(UITapGestureRecognizer *)gestureRecognizer { if(isTappFirstTime) { //put code of hide [UIView animateWithDuration:1 animations:^{ productLabel.alpha = 0; } completion: ^(BOOL finished) { productLabel.hidden = YES; }]; isTappFirstTime = NO; NSLog(@"非表示"); } else { // put code of show [UIView animateWithDuration:1 animations:^{ productLabel = [[UILabel alloc] init]; //UILabel *label = [[UILabel alloc] init]; productLabel.frame = CGRectMake(10, 10, 100, 50); productLabel.backgroundColor = [UIColor yellowColor]; productLabel.textColor = [UIColor blueColor]; productLabel.font = [UIFont fontWithName:@"AppleGothic" size:12]; productLabel.textAlignment = UITextAlignmentCenter; productLabel.text = @"hoge"; [scrollView addSubview:productLabel]; (NSLog(@"表示")); productLabel.alpha = 1; } completion: ^(BOOL finished) { productLabel.hidden = NO; }]; isTappFirstTime = YES; } } //productLabelだけがドラッグできるようにしています。 - (void) handlePanGesture:(UIPanGestureRecognizer*) sender { CGPoint location = [sender translationInView:productLabel]; CGPoint movedPoint = CGPointMake(productLabel.center.x + location.x, productLabel.center.y + location.y); productLabel.center = movedPoint; NSLog(@"dragmethod"); [sender setTranslation:CGPointZero inView:productLabel]; } お手数おかけしますが、宜しくお願いします。

  • メニューボタンが連続して異常表示・・・

    今朝9時過ぎ、株トレードのためにネット利用中のことです。メールソフトは起動させてません。 パソコンの通信状況が悪いのかなと思いつつシステムの不安定を感じました。9時30ごろ次の現象がおきました。 ●起動中ソフトのメニューボタンがまるでパチンコ屋の電飾っぽく連続して動き出したのです。 もちろんメニューボタンはひとつも押していません。 おかしいと思い、ソフトは閉じました。 Windowsスタートボタンを押しても、やはりスタートメニュー類がちかちかと反転を繰り返しました。 ●表示されているウインドウを動かそうとすると子気味悪くぶるぶるふるえたり、変なビープ音が鳴ったり。 ●シャットダウンするにも終了オプションの「電源を切る」が実行できませんでした。 「再起動」もできない状態です。 とりあえずネットの接続ケーブルをはずしてあります。 ●そして理解に苦しむのが1時間たった今これらの異常現象がなくなりました。 NortonInternetSecurity2004を使用しています。4/20更新。完全スキャン4/21。 SpyBot使用。 昨日オンラインスキャンX-Cleanerを実行している。 今現在 ノートンアンチビールススキャン実行中。 SpyBot検索実行中。 ですがいずれも特に疑わしいものは検出できていません。 上記の現象がウィルスの可能性があるのか?、もし ご存知でしたらよろしく回答をお願いします。 私としてはセキュリティに気を使っていたつもりでしたが、今できる限りのことをしてからメールやネット利用を再開したいと思っています。

  • Excelのオートフィルについてお尋ねします。

    Excelのオートフィルについてお尋ねします。 オートフィルを実行した後、オートフィルオプションが 表示されますが、例えば、下記のように セルのコピー(C) 連続データ(S) 書式のみコピー(フィル)(F) この場合の(C)(S)(F)は、何なんでしょうか? キーボードから操作できるのかと思いましたが、変化ありません。 解答宜しくお願いします。

  • 一定時間毎に鳴るタイマーをショートカットで起動したい

    1分や10秒ごとに鳴るタイマーをキーボードのボタン(F1など)で終了・再開できるソフトはありませんでしょうか? 今使っているソフトは連続タイマー君ですが 実行ボタンを押すのが少しめんどうなので・・・ http://www.vector.co.jp/soft/win95/personal/se286200.html よろしくお願いします。

  • WinShotを使っている方

    http://www.woodybells.com/ こちらのキャプチャソフトWinShotを使っている方に質問です。 このソフトに定期実行キャプチャをいうものがありますが、これは連続SSが撮れるということですよね? で、設定をSS撮るのをPrtSc、定期実行キャプチャの終了をF11、間隔を1秒に設定しています。 で、デスクトップなどの連続を撮るために開始するのは、タスクのアイコンから定期実行を選択して開始ボタンを押せば撮れるのですが、ネットゲームなどフルスクリーンにしていると、タスクのアイコンが使用できず、定期実行キャプチャの開始の方法が分かりません。 どのように使用したらよいのでしょうか? どなたかこのソフトを活用してるという方教えて下さい。お願いします。