Swift版跑马灯

Swift版跑马灯,代码如下:

//

//  PaoMaView.swift

//  JiuLiFunds

//

//  Created by yangyunfei on 2018/1/11.

//  Copyright © 2018年 JiuLiFunds. All rights reserved.

//


import UIKit


//跑马灯

class PaoMaView: UIView {

    

    //这里的  label 要显示的宽度为屏幕宽度

    var stop: Bool =false

    var content:String? {

        didSet{

            //移除之前所有的动画

            lb.layer.removeAllAnimations()

            

            lb.text =content

            lb.snp.remakeConstraints({ (make)in

                make.centerY.equalToSuperview()

                make.height.equalTo(40)

                make.left.equalTo(self.snp.right)

                make.width.equalTo(self.textWidth)

            })

            self.circleText()

        }

    }

    

    lazy var lb :UILabel = {

        let lb = UILabel()

        lb.backgroundColor =UIColor.RGBCOLOR(255,241, 217)

        lb.textColor = UIColor.hexToUIColor(sourceString: "e69822")

        lb.font = UIFont.systemFont(ofSize: 14)

       

        return lb

    }()

    

    //计算text的宽度

    var textWidth: CGFloat {

        return getTextSizeWithText(text:self.lb.text, fontNew:FONT14, textWidth: 5000).width

    }

    

    override init(frame:CGRect) {

        super.init(frame: frame)

        self.addSubview(lb)

        lb.snp.makeConstraints({ (make)in

            make.centerY.equalToSuperview()

            make.height.equalTo(40)

            make.left.equalTo(self.snp.right)

            make.width.equalTo(self.textWidth)

        })

    }

    

    required init?(coder aDecoder:NSCoder) {

        fatalError("init(coder:) has not been implemented")

    }

    

    //   关键代码

    func circleText(){

        

        //text宽度小于视图的宽度时,不进行跑马

        if textWidth <self.frame.width {

            lb.snp.remakeConstraints({ (make)in

                make.center.equalToSuperview()

            })

            return

        }

        

        UIView.animate(withDuration:TimeInterval(textWidth /35), delay: 0,       options: .curveLinear, animations: {

            self.lb.transform = .init(translationX: -(self.frame.width + self.textWidth), y:0)

        }) { (bool) in

            //  循环调用 ,退出Controller 时候 记得移除动画

            if bool {

                self.lb.transform = .identity

                self.circleText()

            }

            

        }

    }

    

}



使用时注意的地方:在控制器viewWillAppear中需要重新设置content。 
                           在该页面将APP退到后台,再次进入时需要重新设置content。
                           在控制器viewWillDisappear中最好将它隐藏。

在调用的时候,设置它的content就跑起来了,如下:

paomaView.content = "跑起来。。。。。。。。。。。。。。。"

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值