iOS 跑马灯

跑马灯效果图
  • 几行代码实现跑马灯/ 一个Label搞定跑马灯

    • 要显示的文字text,宽度为width 。
    • label.text = 两份相同text拼接在一起,label 宽度为width * 2
    • label用UIView + CGAffineTransform动画在 width/40 时间内偏移-width长度 (速度 = 40/秒),complete后,将label 复原会起始状态并重新偏移。如此循环。 (视觉错觉产生跑马灯效果)
  • 以下为swift 代码:

//这里的  label 要显示的宽度为屏幕宽度
    var stop: Bool = false 
    lazy var lb : UILabel = {
        let lb = UILabel()
        lb.text = self.text.appending(self.text)
        lb.backgroundColor = .red
        lb.textColor = UIColor.white
        lb.font = UIFont.systemFont(ofSize: 14)
//  如果此是self.width 足够显示。lb的宽度就直接设置为要显示的宽度就行了。
//   lb.frame = CGRect(x: 0, y: 100, width:  self.width*2, height: 40)
        self.view.addSubview(lb)
        lb.snp.makeConstraints({ (make) in
            make.top.equalTo(0)
            make.height.equalTo(40)
            make.left.equalTo(0)
            make.width.equalTo(self.width * 2)
        })
        return lb
    }()
    let text:String  = "两姓联姻,一堂缔约,良缘永结,匹配同称。看此日桃花灼灼,宜室宜家,卜他年瓜瓞绵绵,尔昌尔炽。谨以白头之约,书向鸿笺,好将红叶之盟,载明鸳谱。此证          "
    lazy var width: CGFloat = {
        return self.text.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 14)]).width
    }()


//   关键代码 
  func circleText(){
          UIView.animate(withDuration: TimeInterval(self.width/40), delay: 0,       options: .curveLinear, animations: {
            self.lb.transform = .init(translationX: -self.width, y: 0)
        }) { (bool) in
  //  循环调用 。退出Controller 时候 记得移除动画
            if bool {
                 self.lb.transform = .identity
            self.circleText()
            }
           
        }
 }

  • 注意:
    • 循环时 要text宽度是否超过label显示在屏幕的宽度,如果不超过, 则不执行循环。
    • 原理如此,具体细节调试根据实际需求进行修改
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、跑马灯Label的设计 当UILabel限定只能显示一行时,如果文字超过Label的width就会被省略; 跑...
    Jixin阅读 13,672评论 2 15
  • 跑马灯效果在移动客户端中多用于“公告”、“消息”等功能的展示,本次demo以一种简易的实现方法(UILabel...
    fantasy_wan阅读 8,940评论 0 0
  • 介绍 我们一说起跑马灯第一个想到的就是:山寨机。接下来介绍的跑马灯和那个跑马灯是不一样滴。在iOS中,跑马灯是指l...
    劉光軍_MVP阅读 13,590评论 3 240
  • 一.简介 跑马灯其实就是一串文字的轮播,实现的方式有很多种。这里我只介绍一种,通过CADisplayLink与UI...
    Sunshine_Boys阅读 7,282评论 0 1
  • 8:10离开十堰真武酒店,前往竹山显,采录吕家河民歌。9:40到达。
    行路冰阅读 1,495评论 0 0

友情链接更多精彩内容