NSProgressIndicator исчезает всякий раз, когда начинается анимация
У меня есть NSProgressIndicator (спиннинг), который хорошо отображается, когда он не анимируется, но как только он начинает анимацию, он исчезает. Тем не менее, когда я переключаю стиль на индикатор выполнения, он отображает просто отлично, анимацию и все. Кроме того, он появляется снова, когда прекращает анимацию, поэтому он невидим только во время вращения.
Я новичок в программировании Какао, и я искал несколько часов в своем коде и в Интернете, пытаясь выяснить мою проблему, но у меня не получилось. Что может вызвать эту проблему?
Мой код в некоторой степени основан на коде из образца Apple AVSimplePlayer, найденного здесь.
1 ответ
Я столкнулся с этой проблемой сегодня. Оказывается, при использовании spin
остальные вещи, которые выполняются в основном потоке, запускаются первыми. Это означает, что если у вас есть
let progressIndicator //
progressIndicator.startAnimation(self)
// do tasks
progressIndicator.stopAnimation(self)
Порядок в реальности
let progressIndicator //
// do tasks
progressIndicator.startAnimation(self)
progressIndicator.stopAnimation(self)
Таким образом, вы никогда не увидите анимацию. Вот обходной путь, немного остановите основной runloop, после progressIndicator.startAnimation(self)
,
let progressIndicator //
progressIndicator.startAnimation(self)
RunLoop.main.run(until: Date(timeIntervalSinceNow: 0.001))
// do tasks
progressIndicator.stopAnimation(self)
Тогда все будет хорошо. Я нахожу этот ответ здесь. Вы также можете попробовать другие ответы там.