在同一个UILabel中逐个显示文本

时间:2015-05-08 09:33:05

标签: ios iphone swift uilabel

我的应用中有一个显示聊天消息的UILabel。这些聊天消息被硬编码为字符串数组。我需要的是在UILabel上逐个显示这些消息,但是当用户需要读取每条消息时,我需要在切换消息之间有一定的2秒延迟。

我实施的是以下代码:

for chatText in chatDialogue{


                dispatch_async(dispatch_get_main_queue(), {

                    chatLabel.text=chatText as? String
                })
                println(chatText)
                NSThread .sleepForTimeInterval(2)
            }

这里我们有一个chatDialogues数组

["Hello","How are you?","Can you say DIAS","Wait Please"]

现在我需要将这些显示在同一个标​​签上,但在更改消息之间会有延迟。

执行时的上述实现仅显示循环中的最后一条消息。

1 个答案:

答案 0 :(得分:0)

设置NSTimer,每2秒触发一次,到达最后一个文本时停止:

// instance variables
let chatDialoges = ["Hello","How are you?","Can you say DIAS","Wait Please"]
var textIndex = 0
var timer: NSTimer?

// ...

// somewhere where the timer should start
self.timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "update", userInfo: nil, repeats: true)

//

func update() {
    self.textLabel++

    if self.textLabel == chatDialoges.count {
        self.timer?.invalidate()
        return
    }

    chatLabel.text = chatDialoges[self.textIndex]
}