У меня есть uilabel и uislider на вид. Я хочу установить время ярлыка с помощью слайдера. Перемещение ползунка с 00:00:00 до 03:00:00. означает 3 часа. и переключение на слайдер составляет 0,5 минуты. Также как показано. Мне нужно, чтобы таймер работал, даже если приложение закрыто.
Как показать обратный отсчет на uilabel в iphone?
Ответ 1
Во-первых, нет возможности сохранить таймер после закрытия приложения. Фоновые приложения просто не разрешены на iPhone. Есть способы подделать его таймером (сохранить временную метку, когда приложение выходит, и проверить ее против времени, когда она начнет резервное копирование), но она не будет обрабатывать случай, когда ваш таймер заканчивается до того, как приложение будет запущено обратно вверх.
Что касается обновления UILabel с обратным отсчетом, вероятно, будет работать NSTimer. Что-то вроде этого, если у вас есть таймер NSTimer, int secondsLeft и ULabel 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
Этот код неверен.
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];
Ответ 3
вы можете сохранить свой таймер, когда ваше приложение входит в фон,
как @shawn craver сказал, что вы не можете это сделать, но вы можете сделать это, когда приложение входит в фон ( "не заканчивается" ), которое является другим событием applicationDidEnterBackground и с этим вам понадобится многопоточная GCD (большая центральная отправка).
plase ссылается на эту ссылку