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

专著:http://www.jianshu.com/p/a490131e00e7

效果如下:

001.gif

点击下载查看demo

思路

创建一个view 作为所有内容的父控件, 并且添加到上面一个 label, 作为显示文字的载体

UILabel* contentLabel = [[UILabelalloc] init];[contentLabel sizeToFit];contentLabel.backgroundColor= [UIColorclearColor]; _contentLabel = contentLabel; [selfaddSubview:self.contentLabel];

给内容view的layer添加一个mask层, 并且设置其范围为整个view的bounds, 这样就让超出view的内容不会显示出来

CAShapeLayer* maskLayer = [CAShapeLayerlayer];maskLayer.path= [UIBezierPathbezierPathWithRect:self.bounds].CGPath;self.layer.mask= maskLayer;

给label添加动画

CAKeyframeAnimation* keyFrame = [CAKeyframeAnimationanimation];keyFrame.keyPath=@"transform.translation.x";keyFrame.values= @[@(0), @(-space), @(0)];keyFrame.repeatCount=NSIntegerMax;keyFrame.duration=self.speed*self.contentLabel.text.length;keyFrame.timingFunctions= @[[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut], [CAMediaTimingFunctionfunctionWithControlPoints:0:0:0.5:0.5]];keyFrame.delegate=self;[self.contentLabel.layeraddAnimation:keyFrame forKey:nil];

使用方法

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 效果如下: 点击下载查看demo 思路 创建一个view 作为所有内容的父控件, 并且添加到上面一个 label,...
    萌小菜阅读 12,040评论 7 63
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,585评论 6 30
  • 相信大家有时候会遇到在首页上部展示一行文字,但是文字又很长无法只使用一行来展示,于是大家就想到平时我们在生活中看到...
    ys简单0阅读 379评论 1 2
  • // // JackDateAndDateView.m // ZHB // // Created by JackR...
    JackRen阅读 431评论 0 1
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,148评论 5 13