美文网首页
 Swift中Label跑马灯展示

 Swift中Label跑马灯展示

作者: 轻云_ | 来源:发表于2016-09-29 14:33 被阅读1220次
    label跑马灯.gif

    1.beginAnimations方法用来表示动画的开始,其中
    animationID:动画的标识,
    context:自定义的一些动画数据,这些数据将发送给动画的代理方法:setAnimationWillStartSelector和setAnimationDidStopSelector方法。

    2.setAnimationXXX(一系列方法)用来设置我们进行的动画的一些参数。

    3.commitAnimations方法标记动画结束。与beginAnimations方法成对使用。

    let backgroundView = UIView(frame: CGRect(x: 50, y: 100, width: 200, height: 200))
        backgroundView.clipsToBounds = true
        view.addSubview(backgroundView)
        let labelll = UILabel(frame: CGRect(x: 10, y: 100, width: 0, height: 0))
        labelll.text = "春花秋月何时了?往事知多少。小楼昨夜又东风,故国不堪回首月明中。雕栏玉砌应犹在,只是朱颜改。问君能有几多愁?恰似一江春水向东流。"
        labelll.sizeToFit()
        backgroundView.addSubview(labelll)
        //开始动画
        UIView.beginAnimations("Marquee", context: nil)
        
        //时间
        UIView.setAnimationDuration(20.0)
        
        //曲线方式
        UIView.setAnimationCurve(.Linear)
        
        //判断是否需要反向执行
        UIView.setAnimationRepeatAutoreverses(false)
        
        //重复次数
        UIView.setAnimationRepeatCount(100)
        
        var frame = labelll.frame
        frame.origin.x = -frame.size.width
        labelll.frame = frame
        
        //与begin对应,结束动画
        UIView.commitAnimations()
    

    附加:网上找的封装好的类,挺不错的,可以直接拿去用(出处:http://blog.csdn.net/loveway_/article/details/47343011)

    import UIKit
    class CHWMarqueeView: UIView {
    private var marqueeTitle:String?
    private var mark1:CGRect!
    private var mark2:CGRect!
    //    var bgColor: UIColor?
    //    var textColor: UIColor?
    private var labArr = [UILabel]()
    private var isStop = false
    private var timeInterval1: NSTimeInterval!
    
    convenience init(frame: CGRect, title: String) {
        
        self.init(frame: frame)
        marqueeTitle = "\(title)"
        self.backgroundColor = UIColor.whiteColor()
        self.clipsToBounds = true
        timeInterval1 = NSTimeInterval((marqueeTitle?.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))!/3)
        let lab = UILabel()
        lab.frame = CGRectZero
        lab.textColor = UIColor.darkGrayColor()
        lab.font = UIFont.boldSystemFontOfSize(12.0)
        lab.text = marqueeTitle
        
        //计算textLab的大小
        let sizeOfText = lab.sizeThatFits(CGSizeZero)
        mark1 = CGRectMake(0, 0, sizeOfText.width, self.bounds.size.height)
        mark2 = CGRectMake(mark1.origin.x+mark1.size.width, 0, sizeOfText.width, self.bounds.size.height)
        lab.frame = mark1
        self.addSubview(lab)
        labArr.append(lab)
        
        let useReserve = sizeOfText.width > frame.size.width ? true : false
        
        if useReserve == true {
            
            let reserveTextLb = UILabel(frame: mark2)
            reserveTextLb.textColor = UIColor.redColor()
            reserveTextLb.font = UIFont.boldSystemFontOfSize(14.0)
            reserveTextLb.text = marqueeTitle;
            self.addSubview(reserveTextLb)
            
            labArr.append(reserveTextLb)
            
            self.labAnimation()
        }
    
    
    }
    
    //跑马灯动画
    func labAnimation() {
        if (!isStop) {
           let lbindex0 = labArr[0]
           let lbindex1 = labArr[1]
    
            UIView.transitionWithView(self, duration: timeInterval1, options: UIViewAnimationOptions.CurveLinear, animations: {
                
                lbindex0.frame = CGRectMake(-self.mark1.size.width, 0, self.mark1.size.width, self.mark1.size.height)
                lbindex1.frame = CGRectMake(lbindex0.frame.origin.x+lbindex0.frame.size.width, 0, lbindex1.frame.size.width, lbindex1.frame.size.height)
                
                }, completion: { finished in
                    lbindex0.frame = self.mark2
                    lbindex1.frame = self.mark1
                    self.labArr[0] = lbindex1
                    self.labArr[1] = lbindex0
                    self.labAnimation()
            })
    
        } else {
    
            self.layer.removeAllAnimations()
        }
    
    }
    
    func start() {
        isStop = false
        let lbindex0 = labArr[0]
        let lbindex1 = labArr[1]
    
        lbindex0.frame = mark2;
        lbindex1.frame = mark1;
        self.labArr[0] = lbindex1
        self.labArr[1] = lbindex0
        self.labAnimation()
    
    }
    
    func stop() {
        isStop = true
        self.labAnimation()
    }
    /*
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func drawRect(rect: CGRect) {
        // Drawing code
    }
    */
    
    }
    

    相关文章

      网友评论

          本文标题: Swift中Label跑马灯展示

          本文链接:https://www.haomeiwen.com/subject/wvokyttx.html