Как вы проверяете, вращается ли UIActivityIndicatorView при бесперебойной работе приложения?

#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 
}