Add a delay to a for loop in swift

define those variables

var i = 0
let timer : Timer?

Place this timer in your view did load or wherever you want to start the label change

   timer =  Timer.scheduledTimer(timeInterval: 2.0, target: self, selector:#selector(YourViewController.changeText), userInfo: nil, repeats: true)

and implement this method:

func changeText(){
    if i>=welcomeContainer.count {
        i = 0
    }

    welcomeLabel.text = welcomeContainer[i]
    i += 1
}

when you want to stop it or change the view controller dont forget to call

timer.invalidate()

You can add sleep function

for i in 0..<welcomeContainer.count {
    welcomeLabel.text = welcomeContainer[i]
    sleep(2) // or sleep(UInt32(0.5)) if you need Double
}

You can also use this function to delay something

//MARK: Delay func 

func delay(_ delay:Double, closure:@escaping ()->()) {
    DispatchQueue.main.asyncAfter(
        deadline: DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: closure)
}

and usage is :

        delay(2)  //Here you put time you want to delay
{
            //your delayed code
        }

Hope it will help you.