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)

Тогда все будет хорошо. Я нахожу этот ответ здесь. Вы также можете попробовать другие ответы там.

Другие вопросы по тегам