Ваш основной подход - это звук.Некоторые вещи, которые нужно иметь в виду:
Для таймера обратного отсчета не уменьшайте время, оставшееся в NSTimer
.Вместо этого всегда используйте «сейчас минус время начала».NSTimer
может не срабатывать по расписанию, если система занята.Прочтите «Повторяющиеся и неповторяющиеся таймеры» в NSTimer , чтобы понять, как они работают.
Для такой проблемы мне нравится называть свои файлы именами наподобие digit0.png, digit1.png и т. д. Затем вы можете загрузить их следующим образом:
NSString *imageName = [NSString stringWithFormat:@"digit%d.png", digit];
self.imageView.image = [UIImage imageNamed:imageName];
+imageNamed:
имеет свое собственное кэширование, так что это довольно эффективно.Кроме того, вы можете использовать массив из 10 изображений, которые вы загружаете на раннем этапе, и использовать objectAtIndex:
, чтобы получить правильное.Я просто обычно делаю это с + imageNamed:.
Вставить новое изображение не проблема, но вы не должны использовать UIImageView
для этого.Вам, вероятно, следует создать пользовательский вид с двумя CALayers
, которые вы загружаете вместе с текущим и следующим изображением, и использовать простую анимацию для перемещения от одного к другому.Начните с Core Animation Programming Guide , и в Интернете также есть несколько учебных пособий.Это отличный маленький проект для изучения Core Animation.