2

正方形のグリッドがあり、さまざまな順序でそれらをタップする必要がある小さなタッピングゲームを作成しようとしています。時折、これらの正方形は互いに場所を交換します。

各正方形の位置を配列に入れる必要があると思います。次に、移動するときに、現在の場所から配列からランダムに選択された場所に移動し、配列内のその場所を削除して、同じ場所に複数のボタンが表示されないようにします。

残念ながら、UIButtonを移動させることすらできず、2つの位置の間を補間することもできません。

現在、これはボタンを移動します:

-(IBAction)button:(id)sender
{
    button.center = CGPointMake(200, 200);
}

しかし、私はそれがそのように機能することを望んでいません、私はそれがこのように機能することを望みます、そしてそれは機能しません:

if (allButtonsPressed == YES)
{
    button.center = CGPointMake(200, 200);
}

次のように配置しても移動しません。

-(void)viewDidLoad
{
    [super viewDidLoad];
    button.center = CGPointMake(200, 200);
}

わかりやすくするために、ボタンはInterface Builderを介して追加され、これらすべての状況は他のことを行うときに機能するので、UIButtonを特定の方法で移動/アニメーション化する必要があると思いますか?

4

1 に答える 1

13

viewDidLoadは、ビューが表示される前に発生するため、アニメーション化されずに移動します。viewDidAppearメソッドに入れてみることができます。

所定の位置に点滅するのではなく、アニメーション化する場合は、UIViewアニメーションブロックでラップすることができます。

[UIView animateWithDuration:0.5 animations:^{
    button.center = CGPointMake(200.0, 200.0);
}];

インターフェイスビルダーを使用しているので、ボタンを追跡するためにプロパティを使用していると想定しています。これは、いくつかの設定ボタンのみを使用している場合に機能しますが、ゲームではそれらが変更されると予想されるため、コードに移動するか、少なくともIBOutletCollectionsを使用してボタンを追跡することをお勧めします。

Swift 3.0

UIView.animate(withDuration: 0.5) { [weak self] in
    self?.button.center = CGPoint(x: 200, y: 200)
}
于 2012-12-10T16:56:36.843 に答える