Я пытаюсь динамически написать UILabel на основе сдвигов в iPhone ориентации устройства, используя только gravityValueY. В движении устройства, когда ориентация смещается, также изменяется значение силы тяжести Y, заставляя вычислять относительное изменение угла относительно плоской ориентации - это приложение для гольфа, а расстояние до цели регулируется с помощью тригонометрии. После завершения расчета данные отправляются в функцию, которая преобразует числовое значение c (Int) в строку, рекомендующую клюшку для гольфа достичь цели, а затем обновляет метку в пользовательском интерфейсе. Пример кода в функции о том, как это делается в общем случае:
func setLabel(GravityValueYCalc: Int) {
DispatchQueue.main.async {
let newlabelBasedOnGravityValueY = String(GravityValueYCalc)
self.OldLabel.text = newlabelBasedOnGravityValueY
}
}
Проблема заключается в том, что метка перезаписывается неправильными значениями - см. Пример на прикрепленном снимке экрана. Я знаю, что это простой пример, просто есть много кода, поэтому пытаюсь сузить его. Я проверил ряд возможностей, например, код не генерирует несколько значений и обновляет интерфейс быстрее, чем может заметить глаз; код не записывает другое значение из другого места (это единственный вызов функции setLabel). Кроме того, в журналах XCode не возникает никаких ошибок. Любые идеи? Спасибо.