Как изменить текст UILabel шаг за шагом в Swift - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь сделать экран загрузки в своем приложении, и я хочу, чтобы он отображал текст состояния загрузки в UILabel, поэтому я выбираю viewDidAppear функцию переопределения, чтобы сделать это, но в результате он показывает толькозаконченный текст, который я установил.Вот мой код в viewDidAppear:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(false)
    loadingicon.alpha = 0
    statuslabel.alpha = 0
    loadingicon.alpha = 0
    statuslabel.alpha = 0

    // change 2 to desired number of seconds
    UIView.animate(withDuration: 0.7, animations: {
        //self.imganimation.frame.origin.y -= 150
        self.loadingicon.alpha = 1
        self.statuslabel.alpha = 1
        // self.loadingicon.frame.origin.y -= 50
        // self.statuslabel.frame.origin.y -= 50

    }, completion: nil)

    self.statuslabel.text = "Loading the data"

    sleep(5)

    if CheckInternet.Connection(){
            self.statuslabel.text = "Connection Success"
    } else {
    }
}

Как вы можете видеть, я пытаюсь перевести систему в режим ожидания на 5 секунд, чтобы шаг за шагом показывал мой текст, но текст "Загрузка данных"исчезает, и он показывает мне только текст «Успешное подключение», когда процесс завершен. Как я могу решить эту проблему

Ответы [ 2 ]

0 голосов
/ 16 мая 2018
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(false)
    loadingicon.alpha = 0
    statuslabel.alpha = 0
    loadingicon.alpha = 0
    statuslabel.alpha = 0

    // change 2 to desired number of seconds
    UIView.animate(withDuration: 0.7, animations: {
        //self.imganimation.frame.origin.y -= 150
        self.loadingicon.alpha = 1
        self.statuslabel.alpha = 1
        // self.loadingicon.frame.origin.y -= 50
        // self.statuslabel.frame.origin.y -= 50

    }, completion: nil)

    self.statuslabel.text = "Loading the data"

    DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
      if CheckInternet.Connection(){
              self.statuslabel.text = "Connection Success"
      } else {
      }
  }
}
0 голосов
/ 16 мая 2018

Добавить задержку от текущего времени, используя GCD.

DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
// Add the code you want to execute after the delay
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...