1

デザイナーと協力して、iOS 用のシンプルなゲームを作成しています。ストーリーボードを使用してメニュー シーンを構築しています。

複数のサブビュー (複数のボタン、ラベルなど) で構成されるカスタム ビュー オブジェクトがあり、関連するビュー コントローラーが読み込まれた後に画面上でアニメーション化/スライドさせたいと考えています。

ストーリーボードで構築されたこれらのビューの位置をアニメーション化するにはどうすればよいですか? ストーリーボードで指定された x/y 位置は、viewDidLoad や viewDidAppear などで実装するアニメーションを常にオーバーライドするように見えるため、ViewController ライフサイクルのどこにアニメーションを実装するかを理解できないようです。

完璧な世界では、デザイナーがストーリーボードの目的の「ターゲット」位置にビューを配置でき、コードで画面外に再配置し、画面上でアニメーション化してターゲット位置に戻します。ワークフローの観点からは、これが最も簡単です。

しかし、ビューをストーリーボードの画面外に配置し、ページが読み込まれた後に画面上でスライドさせるだけで解決することもできます。たとえば、ストーリーボードで、viewIWantToAnimateの初期フレーム位置が (0, -100) であるとします。そして、それを (0,0) までスライドさせたい...

次のような簡単な方法はありますか?

@interface MyGameViewController : UIViewController
{
  __weak IBOutlet UIView *viewIWantToAnimate;
}

@implementation MyGameViewController

- (void)viewDidAppear:(BOOL)animated
{

  [UIView animateWithDuration:0.1f
                   animations:^{
                    CGRect onScreenFrame = CGRectMake(0,0, viewIWantToAnimate.frame.size.width, viewIWantToAnimate.frame.size.height )
                     viewIwantToAnimate.frame = onScreenFrame;
                   }];
}
@end
4

0 に答える 0