在iOS App开发方面,我是初学者。我想从左到右移动标签,直到它达到屏幕宽度的一半 - 即标签应移动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);
}
}
我该如何解决这个问题?
答案 0 :(得分: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;}];
答案 1 :(得分:1)
要停止计时器,请执行[timer invalidate]
。
你不能“暂停”一个计时器,所以一旦你这样做,你需要打电话给另一个计时器。
答案 2 :(得分:1)
使计时器无效的正确方法是
[myTimer invalidate];
myTimer = nil;