0

私はiOSアプリ開発の初心者です。画面幅の半分に達するまでラベルを左から右に移動したい-つまり、ラベルは240px移動する必要があります(ラベルはマーキーのように左から右に移動します)。

NSTimerを使用しましたが、ラベルがビューの幅の半分に達したときにタイマーを停止したいと思います。

次のコードを使用しましたが、ラベルがビューの外に移動します。

- (void)viewDidLoad {
    [super viewDidLoad];
    timer = [[NSTimer scheduledTimerWithTimeInterval:0.09 target:self selector:@selector(time:) userInfo:nil repeats:YES] retain];
}

- (void)time:(NSTimer *)theTimer {
    label.center = CGPointMake(label.center.x+3.5, label.center.y);

    NSLog(@"point:%@", label);

    if (label.center.x < - (label.bounds.size.width/2)) {
        label.center = CGPointMake(320+(label.bounds.size.width/2), label.center.y);
    }
}

どうすればこれを解決できますか?

4

3 に答える 3

4

繰り返しタイマーを停止したい場合は、次を使用できます

if (/*You label is in position*/)
    [myTimer invalidate];

しかし、これは iOS でアニメーションを行う通常の方法ではありません。代わりに次の方法を試してください。

CGRect endFrame = /*The frame of your label in end position*/
[UIView animateWithDuration:0.5 animations:^{ myLabel.frame = endFrame;}];
于 2012-07-27T12:43:10.443 に答える
1

タイマーを停止するには、 を実行します[timer invalidate]

タイマーを「一時停止」することはできないため、これを行うと、別のタイマーを呼び出す必要があります。

于 2012-07-27T12:42:37.010 に答える
1

タイマーを無効にする正しい方法は

[myTimer invalidate];
myTimer = nil;
于 2012-07-27T13:03:41.510 に答える