swift - 快速逐字显示文本

标签 swift string delay

快速 5 iOS 13

试图一个字一个字地慢慢打印出一个句子。起草了这个有效的代码,但我担心如果我输入太长的句子,我会因为太多线程而导致手机崩溃。

    let textFeed = "Some text message made up of words"
    var second = 1
    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: {

      for word in textFeed.components(separatedBy: " ") {
        var delay = DispatchTimeInterval.seconds(second)
        DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: {
          self.infoText2.text = String(word)

          print("word",word,second)
        })
        second = second + 1
      }
    })

关于以不同的方式做这件事,减少线程的任何想法?

最佳答案

一个简单的 rekusive func

printMessage(message: "I am a test")

func printMessage(message: String?, delay: TimeInterval = 1) {
        let splits = message?.split(separator: " ", maxSplits: 1)
        print(splits?.first)
        DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: {[weak self] in
            guard splits?.count == 2 else {
                return
            }
            self?.printMessage(message: String(splits?.last ?? ""))
        })
    }

关于swift - 快速逐字显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59195486/

相关文章:

使用 setTimeout(function,delay) 的 JavaScript 函数之间的延迟

android延迟使用处理程序

ios - iOS11字体显示不正确

ios - 在重用单元格并设置 UISwitch 是否处于事件状态时,ios listview 将第一行和最后一行设置为事件状态,有什么问题?

python - 在python中,如何使函数接受相同的小写和大写字母?

c++ - 日期时间字符串到 boost::gregorian::date

c# - 如何将包含编号列表的字符串拆分为多个字符串?

ios - 当前 View 重叠 UINavigationController 的导航栏

ios - 使用 Instruments 分析 Swift,_swift_retain_ 到底是什么?

actionscript-3 - AS3 播放音频之间不必要的延迟