ios - 延迟显示一个字母

标签 ios iphone swift dispatch

我正在尝试在 textView 中显示字母,一次一个,并且有一个延迟,但我无法获得没错。

我想让它看起来像是有人在打字。这是我当前的代码:

let delay = 2.0 * Double(NSEC_PER_SEC)
let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))

let localmessage = message + "\n"

for letter in localmessage.characters {
        dispatch_after(dispatchTime, dispatch_get_main_queue(), {
            self.textView.text = self.textView.text + String(letter)

        })

   }

最佳答案

您使用的是相同的 dispatchTime,因此所有字符都将同时显示。您需要在 for 循环中增加 dispatchTime 以一次显示一个字符。

像这样尝试:

let localmessage = message + "\n"

var myInt = 1

for letter in localmessage.characters {

    let delay = 2.0 * Double(NSEC_PER_SEC) * Double(myInt)
    let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))

    dispatch_after(dispatchTime, dispatch_get_main_queue(), {
        self.textView.text = self.textView.text + String(letter)
    })

    myInt = myInt + 1
}

关于ios - 延迟显示一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38666475/

相关文章:

SwiftUI:ViewBuilder 无法创建基于数组的 View 集合

ios - 无效的 `Podfile` 文件 : cannot load such file -- ⁨path/to/. ios/Flutter/podhelper.rb

ios - 如何从充当服务器的 iPhone 流式传输视频?

swift - 如何在 swift 中使用泛型定义类型别名

iphone - 试图用额外的选项覆盖 initWithFrame

ios - 我无法停止在 YTPlayerView ios 中播放的视频

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

iphone - CoreData 中保存的字符串返回 <null> 和字符串。为什么?

ios - 如何确定 iOS 连接类型(Edge、3G、4G、Wifi)?

ios - 从服务器在 map 上请求注释的简单算法