0

ランダムに動く、または画面をタッチした場所で動くビューを持つアプリを作りたいです。次の問題があります。ランダムなアニメーションを開始するボタンを作成しましたが、アニメーションを停止する別のボタンを作成したいと思います。問題は、2つのボタンが重なっていて、最初のボタンだけが2番目のボタンの位置に表示されていることです。これを押すと、2番目のボタンが本来あるべき位置に表示されます。何が間違っているのかわかりません。おそらくサブビューに問題があります。これが私がボタンを描くコードです。

- (void)drawRect:(CGRect)rect {
// Drawing code

UIButton *randomMovementButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[randomMovementButton addTarget:self 
           action:@selector(animationLoop:finished:context:)
 forControlEvents:UIControlEventTouchDown];
[randomMovementButton setTitle:@"Move Random" forState:UIControlStateNormal];
randomMovementButton.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[self addSubview:randomMovementButton];

UIButton *stopButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[stopButton addTarget:self
            action:@selector(stopAnimation:) 
     forControlEvents:UIControlEventTouchDown];
[randomMovementButton setTitle:@"Stop Moving Random" forState:UIControlStateNormal];
randomMovementButton.frame = CGRectMake(80.0, 210.0, 200.0, 40.0);
[self addSubview:stopButton];
}

私の間違いを理解し、私はボタンの名前と混同され、それらを誤用しました。

4

2 に答える 2

0

2つのボタンに異なるフレームを使用するだけで、重なり合うことはありません...

于 2012-06-18T21:18:44.863 に答える
0

それらは重複していません。2番目のボタンにはフレームがありません。あなたはこれを書いた:

UIButton *stopButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[stopButton addTarget:self
        action:@selector(stopAnimation:) 
 forControlEvents:UIControlEventTouchDown];
[randomMovementButton setTitle:@"Stop Moving Random" forState:UIControlStateNormal];
randomMovementButton.frame = CGRectMake(80.0, 210.0, 200.0, 40.0);
[self addSubview:stopButton];

randomMovementButton3行目と4行目に、の代わりに書いたstopButton。これは、タイトルとフレームの両方がstopButtonではなくrandomMovementButtonに設定されていることを意味します。また、この2番目の部分と最初の部分のフレームは同じです(両方ともCGRectMake(80.0, 210.0, 200.0, 40.0))ので、修正すると重なります。それらの1つを変更します。

于 2012-06-18T21:55:08.480 に答える