【问题标题】:NSTimer Decrease the time by seconds/millisecondsNSTimer 以秒/毫秒为单位减少时间
【发布时间】:2012-04-21 08:05:15
【问题描述】:

我正在开发一个 QuiZ 应用程序。它需要一个倒数计时器,因为我想在 75:00.00 (mm:ss.SS) 启动一个计时器,并通过减少 1 毫秒将其减少到 00:00.00 (mm:ss.SS)。我想显示 Time UP 的警报!当时间到达 00:00.00 (mm:ss.SS)。

我通过以下链接显示时间

Stopwatch using NSTimer incorrectly includes paused time in display

【问题讨论】:

    标签: iphone objective-c ios5 nstimer


    【解决方案1】:

    这里有一个简单的解决方案。

    声明

    @interface ViewController : UIViewController
    {
        IBOutlet UILabel * result;      
        NSTimer * timer;                
        int currentTime;
    }
    
    - (void)populateLabelwithTime:(int)milliseconds;
    -(IBAction)start;
    -(IBAction)pause;
    @end
    

    定义

    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        currentTime = 270000000; // Since 75 hours = 270000000 milli seconds
    
    
    }
    
    -(IBAction)start{
       timer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES];
    
    }
    -(IBAction)pause{
        [timer invalidate];
    
    }
    - (void)updateTimer:(NSTimer *)timer {
        currentTime -= 10 ;
        [self populateLabelwithTime:currentTime];
         }
    - (void)populateLabelwithTime:(int)milliseconds {
        int seconds = milliseconds/1000;
        int minutes = seconds / 60;
        int hours = minutes / 60;
    
        seconds -= minutes * 60;
        minutes -= hours * 60;
    
       NSString * result1 = [NSString stringWithFormat:@"%@%02dh:%02dm:%02ds:%02dms", (milliseconds<0?@"-":@""), hours, minutes, seconds,milliseconds%1000];
        result.text = result1;
    
    }
    

    【讨论】:

    • 嘿,它可以通过一些更改正常工作...我有滚动视图,我在其中显示时间..如果我拖动滚动视图,时间不计算(也在后台).. . 我要做什么...?
    • 添加此代码以在滚动期间启用计时器 .................................. ............................. -( IBAction)start{ timer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self 选择器:@selector(updateTimer:) userInfo:nil repeats:YES]; [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; }
    【解决方案2】:

    使用以下代码减少计时器。

    double dblRemainingTime=60; //1 minute
    
    if(dblRemainingTime >0)
    {
         dblRemainingTime -= 1;
         int hours,minutes, seconds;
         hours = dblRemainingTime / 3600;
         minutes = (dblRemainingTime - (hours*3600)) / 60;
         seconds = fmod(dblRemainingTime, 60);  
         [lblRemainingTime setText:[NSString stringWithFormat:@"%02d:%02d",minutes, seconds]];
    }
    else
          alert('Time up buddy');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 2019-09-11
      相关资源
      最近更新 更多