У меня есть секундомер, который периодически обновляет представление в своем методе tick
. Метод запускается черезperformSelectorAfterDelay ненадежный на Apple Watch
[self performSelector:@selector(tick) withObject:self afterDelay:0.1f];
Это прекрасно работает на iPhone, где изображение обновляется приблизительно. каждую десятую секунды.
Теперь я хочу использовать тот же класс для достижения этого на Apple Watch. Когда я запускаю секундомер, представление получает обновленный вид OK. Однако через 2 секунды частота кадров падает, и секундомер становится непригодным.
Здесь весь tick
метод:
- (void)tick {
if (!self.running) return;
NSTimeInterval currentTime = [NSDate timeIntervalSinceReferenceDate];
NSTimeInterval elapsed = currentTime - startTime;
if (countdown) {
curTime = originalTime - (elapsed * 1000);
}else {
curTime = originalTime + (elapsed * 1000);
curTime -= offset;
}
[self.delegate stopwatch:self tick:curTime];
long thisThousand = curTime/1000;
if (curTime > 0 || !countdown) {
if (thisThousand != lastThousand) {
long seconds = curTime/1000;
if (countdown) seconds++;
[self.delegate stopwatch:self fullSecond:seconds];
}
lastThousand = curTime/1000;
[self performSelector:@selector(tick) withObject:self afterDelay:0.1f];
} else {
curTime = 0;
[self.delegate stopwatch:self fullSecond:0];
[self.delegate stopwatchStoped:self];
[self stopTimer];
}
}
Любые идеи о том, как получить, чтобы работать. Или альтернативное решение?
Большое спасибо!
EDIT: Пользовательский интерфейс - это простая метка, а не причудливая анимация. Метка должна быть установлена только с 0: 00: 00.1 до 0: 00: 00.2 и т. Д.
Стоит отметить, что Core Animation недоступна в WatchKit, в настоящее время. – bgilham
Ahh. Это раздражает. Надеюсь, это будет скоро, и тогда вы сможете полностью отменить этот отличный ответ. –