как показать отсчет времени на uilabel в iphone? - PullRequest
10 голосов
/ 06 октября 2009

У меня есть uilabel и uislider на представлении. я хочу установить время метки с помощью slider.range слайдера от 00:00:00 до 03:00:00. означает 3 часа. И интервал на слайдере - 0,5 минуты. Также как показать. Я хочу, чтобы таймер работал, даже если приложение закрыто.

Ответы [ 3 ]

41 голосов
/ 06 октября 2009

Во-первых, нет способа сохранить таймер включенным после закрытия приложения. Фоновые приложения просто не разрешены на iPhone. Существуют способы подделать его с помощью таймера (сохранить временную метку при выходе из приложения и сравнить ее со временем, когда оно запускается обратно), но он не справится со случаем, когда таймер истекает до того, как приложение запускается обратно. до.

Что касается обновления UILabel с помощью обратного отсчета, NSTimer, вероятно, будет работать. Примерно так, если в вашем классе есть таймер NSTimer, int secondsLeft и UILabel countdownLabel:

Создать таймер:

timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];

Метод updateCountdown:

-(void) updateCountdown {
    int hours, minutes, seconds;

    secondsLeft--;
    hours = secondsLeft / 3600;
    minutes = (secondsLeft % 3600) / 60;
    seconds = (secondsLeft %3600) % 60;
    countDownlabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
}

Я делаю нечто подобное в одном из своих приложений, но сейчас у меня нет кода.

2 голосов
/ 27 ноября 2010

Этот код неверен.

timer = [NSTimer scheduledTimerWithInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];

Так и должно быть.

timer = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
0 голосов
/ 11 сентября 2013

вы можете оставить таймер включенным, когда ваше приложение переходит в фоновый режим,

как @shawn craver сказал вам, что вы не можете сделать это, но вы можете сделать это, когда приложение входит в фоновый режим («не завершается»), что является другим событием и с этим вам понадобится многопоточный GCD (грандиозная центральная диспетчеризация).

пожалуйста, обратитесь по этой ссылке

установить таймер в ios

...