首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除和添加字母对UILabel的阻塞效应- Swift 3

删除和添加字母对UILabel的阻塞效应- Swift 3
EN

Stack Overflow用户
提问于 2017-02-13 14:03:43
回答 1查看 2.7K关注 0票数 1

有人能解释我如何在SWIFT3.0中实现这个效果吗?这几乎是一个巨大的影响,但我不想幻灯片的UILabel。

这样做就太好了

第一个字母被删除,第20个字母被添加,然后第二个字母被删除,21被添加到字符串文本的末尾。我是个圈套,我真的不知道怎么从它开始。

EN

回答 1

Stack Overflow用户

发布于 2017-02-14 10:14:09

听起来是个有趣的练习,下面是我对此的看法:

请注意,这绝不是生产准备代码,而是一个快速演示背后的想法。此外,下面的片段是在操场的上下文中编写的,以便快速测试。

代码语言:javascript
复制
import UIKit
import PlaygroundSupport

let label = UILabel(frame: CGRect(x: 0, y: 0, width: 120, height: 30))
let text  = "marquee effect on UILabel by removing letters in front and adding in end in swift 3"
label.lineBreakMode   = .byClipping
label.text            = text
label.backgroundColor = .white
label.textAlignment   = .left

let timer = Timer.scheduledTimer(withTimeInterval: 0.3, repeats: true) { _ in
    DispatchQueue.main.async {
        if let text = label.text, !text.isEmpty {
            let index = text.index(after: text.startIndex)
            label.text = label.text?.substring(from: index)
        }
    }
}

PlaygroundPage.current.liveView = label

这会给你带来这个:

关于这一点的一些说明:

  1. 您可以使用其他机制来代替定时器,如CADisplayLink或自定义动画回调。
  2. 如果使用单间距字体,效果会更好
  3. 当文本为空或计时器无效时,此代码不处理重置
  4. 其效果是在标签中设置整个文本,将其裁剪模式设置为只显示其界限内的字符&最后从字符串的开头删除字符。我没有看到真正的理由去做删除/插入‘舞蹈’,你在这个问题中描述,但这将是琐碎的事情做……

无论如何,我希望这是有意义的:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42205951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档