#ios #swift #uiactivityindicatorview #ios12
#iOS #swift #uiactivityindicatorview #ios12
Вопрос:
Моя проблема в том, что вы не можете видеть UIActivityIndicatorView
, потому что приложение работает плавно, поэтому я не уверен, правильный ли код.
Вот все, что упоминает об этом:
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var scoreLabel: UILabel!
@IBOutlet var progressBar: UIView!
@IBOutlet weak var progressLabel: UILabel!
@IBOutlet weak var loadingIndicator: UIActivityIndicatorView!
override func viewDidLoad() {
super.viewDidLoad()
loadingIndicator.hidesWhenStopped.toggle()
nextQuestion()
}
func startOver() {
loadingIndicator.startAnimating()
questionNumber = 0
score = 0
nextQuestion()
}
func nextQuestion() {
updateUI()
loadingIndicator.stopAnimating()
if questionNumber <= 12 {
func updateUI() {
scoreLabel.text = "Score: (score)"
progressBar.frame.size.width = (view.frame.size.width / 13) * CGFloat(questionNumber)
}
Это не в порядке.
Комментарии:
1. В чем смысл индикатора активности? Ввод кода
nextQuestion
иupdateUI
произойдет слишком быстро, чтобы оправдать его использование.2. Я просто играю, но это было медленнее, прежде чем я добавил индикатор активности
Ответ №1:
Вы можете искусственно добавить задержку nextQuestion()
с помощью любого:
Timer.scheduledTimer(withTimeInterval: 1, repeats: false) { [weak self] _ in
self?.nextQuestion()
}
или
DispatchQueue.main.asyncAfter(deadline: .now() 1) { [weak self] in
self?.nextQuestion()
}
Задержка позволит вам увидеть вращение таймера. Лучший подход — скрыть свой уровень обслуживания за протоколом, тогда у вас может быть макет уровня обслуживания, который возвращает образцы данных после задержки или выдает ошибки. Это позволяет вам тестировать такие вещи, как загрузка анимации, а также обработка ошибок.
Комментарии:
1. Вы можете проще использовать
DispatchQueue.main.async
. Не нужно ждать лишнюю секунду.
Ответ №2:
просто чтобы проверить, работает ли он, вы можете использовать точку останова в строке, где activityindicator начинает анимацию, вы также можете использовать таймер
Timer.scheduledTimer(withTimeInterval: 5, repeat: false){ (timer) in
//start animating here
}