【问题标题】:How to display UILabel one line at a time in Swift如何在 Swift 中一次显示 UILabel 一行
【发布时间】:2020-10-02 21:52:46
【问题描述】:

我在 tableView 单元格中有一个 UILabel,我想逐行制作动画。该字符串有换行符,\nlines.count 按预期返回 7,但即使字符串本身不是 nil,也没有任何行被添加到标签中。

cellForRow 中的代码

var index = 0
let lines = messageList[indexPath.row].message.components(separatedBy: "\n")
senderCell.otherUserMessage.numberOfLines = lines.count
Timer.scheduledTimer(withTimeInterval: 3, repeats: true, block: { [weak self] timer in
                    if index != lines.count {
                        let char = lines[index]
                        let nChar = "\n\(char)"
                        senderCell.otherUserMessage.text! += nChar
                        print("char is \(nChar)") //nChar prints the proper text
                        print("senderCellText is \(senderCell.otherUserMessage.text!)") // but this prints an array of numbers
                        // Play sound each time
                         do {
                            self!.audioPlayer = try AVAudioPlayer(contentsOf: self!.koalaMessageSound)
                            self!.audioPlayer.play()
                         }catch{
                             // couldn't load file :(
                        }
                        index += 1
                    } else {
                        timer.invalidate()
                    }
                })

想法/预期结果

【问题讨论】:

  • 没有动画能用吗?你有senderCell.otherUserMessagel.numberOfLines = 0; 吗?
  • 谢谢@danh。是的,我有 senderCell.otherUserMessage.numberOfLines = lines.count 我现在将其添加到问题中。
  • @Dekpe 这不直观,但您希望将 numberOfLines 设置为 0。

标签: ios swift uitableview animation uilabel


【解决方案1】:

我发现像这样为标签设置动画的唯一方法是: 1.为原始标签中的每一行创建一个标签副本(计算frame.height / lineHeight) 2. 用单行矩形遮盖每个副本 3. 分别为每个Label 设置动画 - 每个标签将仅在此处显示一行,因此您可以单独控制它们。

注意:使用\n 是不可能的,因为在较小的设备上,有时文本可能会因为它的长度而进入下一行,因此要获得实际的行数,您需要像我在第 1 点中描述的那样计算。

【讨论】:

  • 谢谢@GrzegorzKrukowski。我是否通过情节提要添加其他标签?您有执行此操作的代码示例吗?
  • 你好@GrzegorzKrukowski,你有时间写代码吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-05
相关资源
最近更新 更多