设为首页 加入收藏

TOP

【IOS】自定义可点击的多文本跑马灯YFRollingLabel(二)
2017-10-13 10:33:19 】 浏览:5854
Tags:IOS 定义 点击 文本 马灯 YFRollingLabel
 从图中看可以到 无论左滚右滚   绿色始终是Labels[0](将要消失的Label)  红色始终是Label[1]

正常滚动情况下:  

  绿色的offsetX值随着speed而变 : self.offsetX =  self.offsetX - sign * self.speed;

  红色的X值会随着绿色的offsetX和固定间距的关系而变 : CGFloat nextOffX = self.offsetX + sign * (((self.orientation == RollingOrientationLeft)? firstRect.size.width : lastRect.size.width) +   self.internalWidth);

  通过_currentIndex值从保存到的数据中获取到红色、绿色的内容和大小后赋值:

当绿色消失的一瞬间:

  本该是在右边的红色一下子吓绿了 : self.offsetX = _labels[1].frame.origin.x;  

  消失的绿色又将会按照正常滚动的情况下变为红色

   _currentIndex指得始终是绿色内容的索引: _currentIndex = (_currentIndex + 1)  % _textArray.count;

  通过这个值又将会获取按照正常滚动的情况下  红色、绿色的大小和文本内容

  (两个又将会进行的流程将会在"正常滚动情况下"的蓝色部分操作)

    }

 

好了  解释到此结束   看着好累。。。。   慢着   还有点击事件没写完

点击事件:在给UILabel添加了Tap手势后进行处理

-(void)labelTap:(UITapGestureRecognizer *)gesture{
    NSInteger tag = ((UILabel *)[gesture view]).tag - 100;
    NSInteger index;
    if(tag == 0){   //如果是(Labels[0])绿色
        index = _currentIndex;
    }else if (tag == 1){  //如果是(Labels[1])红色  就是当前点击的后一个
        index = (_currentIndex + 1) % _textArray.count;
    }else{  
        index = _currentIndex;
    }   
if(self.labelClickBlock){ self.labelClickBlock(index); } }

 

终点

代码见GitHub: ====>   YFRollingLabel       PS:源码以及GitHub文档都是用蹩脚的英语写的,也不知道会不会有人看。。

另外说明记录存在的问题:

对于放入的文本数组  长度不能太短   因为里面只有两个UILabel  如果长度太短的话   并且间距也小的情况下

在绿色刚消失后, 又会立马变为红色,出现在目前的绿色右边,而不是慢慢的移动出现。

  

文本太长太长的话(几百个中文,正常情况下不会设置这么多吧), 会导致获取的文本宽度过长,UILabel宽度过长,文本直接就不显示了,但点击事件还是有的  说明了还存在。。。这就搞不懂。。。

好了,终于写完了,Windows 10 Mobile 万岁!!!

 

 

 

PS:新的知识点:CADisplayLink

CADisplayLink是一个能让我们以和屏幕刷新率相同的频率(每秒60次)将内容画到屏幕上的定时器。

但如果调用的方法比较耗时,超过了屏幕刷新周期,就会导致跳过若干次回调调用机会。

//创建
CADisplayLink displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(doSomeThing:)];    
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

//设置是否停止
displayLink.Pause = NO/YES;

//释放
[displayLink invalidate];  
displayLink = nil;

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇OC 内存管理 下一篇swift 2.2 语法 (上)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目