 Swift中Label跑马灯展示

2016-09-29  本文已影响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
}
*/

}
上一篇下一篇

猜你喜欢

热点阅读