跑马灯动画点击事件
来源:互联网 发布:vb打开资源管理器 编辑:程序博客网 时间:2024/05/16 01:19
代码块
//// 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,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 0
- 跑马灯动画点击事件
- 跑马灯效果动画
- listView调套跑马灯条目点击事件无法点击BUG
- 动画后点击事件
- iOS 动画中 点击事件
- iOS 雪花动画与跑马灯
- 使用位移动画实现跑马灯效果
- Android 垂直跑马灯,加入事件监听
- button执行frame动画响应点击事件
- 不阻塞UI的跑马灯,解决跑马灯和动画冲突问题
- Silverlight开发历程—动画(实现跑马灯效果)
- Android跑马灯效果(动画横向移动)
- android ViewPager实现 跑马灯切换图片+多种切换动画
- animation跑马灯动画实现两种方法
- Android 动画效果 -->跑马灯效果、文字上下翻滚效果
- adapterViewFlipper 实现跑马灯效果使用动画出现的问题
- android 2048游戏、kotlin应用、跑马灯、动画源码
- 浅谈Android动画中点击事件的捕捉
- JS预解析,作用域
- [知其然不知其所以然-30] How to work around when system can not be woken up
- Android 4.4 NotificationManagerService使用详解与原理分析(二)__原理分析
- java回调机制
- java类和对象的思想以及常见类使用实例
- 跑马灯动画点击事件
- MATLAB mex时 出现错误“error LNK2019 无法链接的外部符号”
- HashMap和Hashtable及HashSet的区别
- 计算机网络系统互连模型
- unity的材质竟然可以写shader
- AndroidStudio 找不到FragmentActivity
- android viewPager 切换页面时防止fragment重新加载
- 理解和使用 JavaScript 中的回调函数
- ISOData(迭代自组织分析算法)