Стиль приложения Iphone отсчитывает улучшение? - PullRequest
0 голосов
/ 26 марта 2012

Я искал интернет несколько дней до сих пор.Я нашел некоторую полезную информацию, но просто хочу, чтобы все было идеально.

Я пытаюсь написать приложение обратного отсчета, которое использует только секунду, мой текущий код слишком сложен и, возможно, не по дороге.Ищете кого-то, кто может разобраться.

- (void)updateTimer{

NSDate *currentDate = [NSDate date];
NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"s"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
NSString *timeString=[dateFormatter stringFromDate:timerDate];

// where the part change time string back to int
NSString *changeToInt = timeString;
int stringInt = [changeToInt integerValue];

// loop for count down numbers
if ((buttValue - stringInt) > 0) {
    leftTime = buttValue - stringInt;
    [self updateValue];
} else {
    leftTime = 0;
    [self updateValue];
}

}

2 проблемы с кодом, 1) мне нужно пройти через все форматирование даты, чтобы получить целое число?2) в цикле я использовал две переменные, я надеялся взять одну и использовать что-то вроде -

Ответы [ 3 ]

0 голосов
/ 26 марта 2012
 -(void)initialiseTimer
{
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timeElapsed) userInfo:nil repeats:YES];
    startDate = [[NSDate date] retain];

}
-(void)timeElapsed
{

    NSLog(@"Seconds elapsed since start date %d", abs([startDate timeIntervalSinceNow]));

}

Вы можете манипулировать им, чтобы создать приложение в стиле обратного отсчета.

0 голосов
/ 26 марта 2012

Используйте этот код !!

-(IBAction)startAndStop:(id)sender
{
    startDate = [[NSDate date]retain];
    if([btnStopWatch.titleLabel.text isEqualToString:@"Start"])
    {
        stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/100.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];
        [btnStopWatch setTitle:@"Stop" forState:UIControlStateNormal];
    }
    else if([btnStopWatch.titleLabel.text isEqualToString:@"Stop"])
    {
        [stopWatchTimer invalidate];
        [btnStopWatch setTitle:@"Start" forState:UIControlStateNormal];
    }
}
- (void)updateTimer
{
    NSDate *currentDate = [NSDate date];
    NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
    NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"HH:mm:ss"];
    [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
    timeString=[dateFormatter stringFromDate:timerDate];
    stopWatchLabel.text = timeString;
    NSLog(@"Seconds elapsed since start date %d", abs([startDate timeIntervalSinceNow]));

}
0 голосов
/ 26 марта 2012

Я не понимаю, что именно вам нужно, но я думаю, что вы просто хотите получить количество секунд с этого момента до известной даты.Метод timeIntervalSinceNow даст вам значение NSInteger, которое представляет количество секунд от даты получателя до настоящего времени, которое, если получатель раньше, чем сейчас, будет отрицательным значением (в противном случае оно будет положительным).

Итак, просто чтобы быть более точным:

- (void)updateTimer
{
    leftTime = MAX(0, -[startDate timeIntervalSinceNow]); //if less than 0 will be forced to 0 -> date reached
    [self updateValue];
}

Как я уже сказал, я не уверен, что это то, что вы хотите.Если это не так, я прошу прощения.Удачи!

...