//// SNMarqueeVIEw.swift// Futianwisdom//// Created by SNow on 16/5/23.// copyright (c) 2016年 futianwisdom. All rights reserved.//import UIKitimport SwiftyJsONprotocol SNMarqueeVIEwDelegate { func dIDSelectURL(url: String)}class SNMarqueeVIEw: UIVIEw { var delegate: SNMarqueeVIEwDelegate? private var marqueeTitle = "" private var TitleArray = [String]() private var urlArray = [String]() private var mark:CGRect! private var lastLabelFrame = CGRectZero private var labarr = [UILabel]() private var isstop = false private var timeInterval1: NSTimeInterval! convenIEnce init(frame: CGRect,Json: [JsON]) { self.init(frame: frame) for obj in Json { marqueeTitle += obj["Title"].stringValue TitleArray.append(obj["Title"].stringValue) urlArray.append(obj["link"].stringValue) } self.backgroundcolor = UIcolor.whitecolor() self.clipsToBounds = true let tapGesture = UITapGestureRecognizer(target: self,action: "tapClick:") self.addGestureRecognizer(tapGesture) timeInterval1 = NSTimeInterval(marqueeTitle.characters.count/2) for _ in 0...1 { for Title in TitleArray { let lab = UILabel() lab.frame = CGRectZero lab.textcolor = UIcolor.graycolor() lab.Font = UIFont.boldSystemFontOfSize(14.0) lab.text = Title lab.userInteractionEnabled = false //计算textLab的大小 let sizeOfText = lab.sizeThatFits(CGSizeZero) lab.frame = CGRectMake( lastLabelFrame.origin.x + lastLabelFrame.size.wIDth,0,sizeOfText.wIDth,self.bounds.size.height) lastLabelFrame = lab.frame self.addSubvIEw(lab) labarr.append(lab) } } mark = CGRectMake(0,lastLabelFrame.origin.x + lastLabelFrame.size.wIDth,self.bounds.size.height) self.labAnimation() } //跑马灯动画 func labAnimation() { if (!isstop) { UIVIEw.TransitionWithVIEw(self,duration: timeInterval1,options: UIVIEwAnimationoptions.Curvelinear,animations: { for label in self.labarr { label.frame.origin.x -= self.mark.size.wIDth/2 } },completion: { finished in for label in self.labarr { label.frame.origin.x += self.mark.size.wIDth/2 } self.labAnimation() }) } else { self.layer.removeAllAnimations() } } func start() { isstop = false self.labAnimation() } func stop() { isstop = true self.labAnimation() } func tapClick(gesture: UITapGestureRecognizer) { let clickPoint = gesture.locationInVIEw(self) for vIEw in self.subvIEws { if let label = vIEw as? UILabel { if let obj = label.layer.presentationLayer() as? CALayer { if (obj.hitTest(clickPoint) != nil) { if let text = label.text { for (index,value) in EnumerateSequence(TitleArray) { if text == value { if urlArray.count > index { self.delegate?.dIDSelectURL(urlArray[index]) } } } } } } } } }}总结
以上是内存溢出为你收集整理的跑马灯动画点击事件全部内容,希望文章能够帮你解决跑马灯动画点击事件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)