使用NSTimer从0.00计算到176.20

时间:2015-08-07 16:37:42

标签: ios objective-c swift nstimer

我正在开发一款应用,我希望为我的应用中的数字设置动画。我知道我需要使用NSTimer。只是不确定如何。例如,我希望应用程序从0.00到176.20(self.total.text)计数。

NSTimer *timer;
    timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(update) userInfo:nil repeats:YES];


- (void)update{
    float currentTime = [self.total.text floatValue];
    float newTime = currentTime + 0.1;
    self.total.text = [NSString stringWithFormat:@"%f", newTime];

}

1 个答案:

答案 0 :(得分:1)

您需要决定要计算的增量。你想在176.20停止,所以看起来你想要的增量为0.1秒。您需要一个变量来存储当前位置。

的OBJ-C ///

const float limit = 176.2f

@property (nonatomic) float seconds;
@property (nonatomic, strong) NSTimer *updateTimer;

// Initialize
self.seconds = 0.0f;
self.updateTimer = [NStimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(timerFired) userInfo:nil repeats:true];

夫特///

var seconds = 0.0
let limit = 176.2
let timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("timerFired"), userInfo: nil, repeats: true)

然后你需要创建一个函数,用于每次定时器触发时更新标签,以及一个调度定时器的函数。

的OBJ-C ///

- (void)timerFired {
    self.seconds += 0.1f;
    self.label.text = [NSString stringWithFormat:@"%f", self.seconds];
    if (self.seconds >= limit) {
        [self.updateTimer invalidate];
    }
}

夫特///

func timerFired() {
    seconds += 0.1 //Increment the seconds
    label.text = "\(seconds)" //Set the label
    if (seconds >= limit) {
        timer.invalidate() 
    }
}