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
}
*/
}