美文网首页UIiOS开发iOS
iOS - 实现在有限label上 动态显示所有文字

iOS - 实现在有限label上 动态显示所有文字

作者: 萌小菜 | 来源:发表于2015-09-24 11:46 被阅读9248次

效果如下:

001.gif

点击下载查看demo

思路

  1. 创建一个view 作为所有内容的父控件, 并且添加到上面一个 label, 作为显示文字的载体
UILabel* contentLabel = [[UILabel alloc] init];
[contentLabel sizeToFit];
contentLabel.backgroundColor = [UIColor clearColor]; _contentLabel = contentLabel; [self addSubview:self.contentLabel];
  1. 给内容view的layer添加一个mask层, 并且设置其范围为整个view的bounds, 这样就让超出view的内容不会显示出来
CAShapeLayer* maskLayer = [CAShapeLayer layer];
maskLayer.path = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;
self.layer.mask = maskLayer;
  1. 给label添加动画
CAKeyframeAnimation* keyFrame = [CAKeyframeAnimation animation];
keyFrame.keyPath = @"transform.translation.x";
keyFrame.values = @[@(0), @(-space), @(0)];
keyFrame.repeatCount = NSIntegerMax;
keyFrame.duration = self.speed * self.contentLabel.text.length;
keyFrame.timingFunctions = @[[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut], [CAMediaTimingFunction functionWithControlPoints:0 :0 :0.5 :0.5]];
keyFrame.delegate = self;
[self.contentLabel.layer addAnimation:keyFrame forKey:nil];

使用方法

// 创建
CFDynamicLabel* testLabel = [[CFDynamicLabel alloc] initWithFrame:CGRectMake(100, 300, 180, 21)];
// 设置滚动速度
testLabel.speed = 0.6;
[self.view addSubview:testLabel];
// 设置基本属性
testLabel.text = @"我不想说再见,不说再见,越长大越孤单";
testLabel.textColor = [UIColor yellowColor];
testLabel.font = [UIFont systemFontOfSize:23];
testLabel.backgroundColor = [UIColor grayColor];

相关文章

网友评论

  • 96255f2f235c:你好 怎么在XIB里面当做自定义控件使用呀?
    96255f2f235c:@萌小菜 嗯,好的,谢谢你,有时间我再试一下:smile:
    萌小菜:@冷静sir github 已更新https://github.com/yuchuanfeng/CFDynamicLabel 你试试
    萌小菜:@冷静sir 有时间我改下
  • xxxixxxx:跳转页面再回来就不走了,这个怎么解决啊
    萌小菜:@拾荒少年v 我的demo (https://github.com/yuchuanfeng/CFDynamicLabel)没有问题呀
  • 程序员进阶:我知道了,不能用masonry,用cgrectmake就好了
  • 程序员进阶:我把这个CFDynamicLabel 实例化的Label放在xib的tableviewcell 上,但是显示不出来,请问这是怎么回事?
  • SunshineAutumn:楼主,我想问一下,能让文字接着滚动吗??而不是滚到最开始的地方
  • 93d45d365eeb:滚动广告 走马灯
  • 萌小菜: :stuck_out_tongue_closed_eyes: 啥是ae
    02671595fab6:@萌小菜 after effect
  • Shumin_Wu:_(•̀ω•́ 」∠)_ 哟哟哟 让我想起了耍ae 的青葱岁月

本文标题:iOS - 实现在有限label上 动态显示所有文字

本文链接:https://www.haomeiwen.com/subject/qfoicttx.html