当前位置: 首页 > 编程笔记 >

iOS在固定的label上动态显示所有文字

钱弘壮
2023-03-14
本文向大家介绍iOS在固定的label上动态显示所有文字,包括了iOS在固定的label上动态显示所有文字的使用技巧和注意事项,需要的朋友参考一下

照例先看下效果图:

思路

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

UILabel* contentLabel = [[UILabel alloc] init];
[contentLabel sizeToFit];
contentLabel.backgroundColor = [UIColor clearColor]; _contentLabel = contentLabel; [self addSubview:self.contentLabel];

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

CAShapeLayer* maskLayer = [CAShapeLayer layer];
maskLayer.path = [UIBezierPath bezierPathWithRect:self.bounds].CGPath;
self.layer.mask = maskLayer;

给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];

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

 类似资料:
  • 问题内容: 我想以编程方式显示带有文本的活动指示器,例如“照片”应用中的活动指示器(在编辑和保存图片之后)。我怎样才能做到这一点? 问题答案: Xcode 8.2.1•Swift 3.0.2 样本项目 Xcode 9.0•Swift 4.0

  • 我在屏幕右下角有两个覆盖的纹理,一个左右箭头,用作控制角色的joypad。我将这些位置与Players.x位置相关,该位置总是固定在屏幕的中心。到目前为止很酷...如下: 我现在试图把玩家的分数放在屏幕的左上角。分数是由位图字体组成的,如下所示。 在render()方法中,我可以调用其他一些方法来更新,比如leftJoypad的位置等等,就像renderJoypad()一样。我也调用我的draw

  • 问题内容: 我需要在网页上显示一个大表,并且需要防止第一列和第一行滚动。 我想动态设置此表的垂直大小(在某些静态大小的页眉/页脚页面内容之间),以使其尽可能高,而不必强制浏览器窗口具有垂直滚动条。 这仅需要在使用所有/任何版本的现代浏览器中工作:html,css,javascript,jquery 重要顺序: 具有许多表单字段,隐藏值,行的javascript折叠等的复杂表,稍后将添加 第一行将有

  • 问题内容: 我的应用程序内部有一个导航控制器和一个集合视图。 有一个问题:我在导航栏中使用大标题,因此其中的 所有内容都不是静态的。当我滚动集合视图单元格时, 标题(我在 导航栏中随意移动UILabel()以手动创建它 )和按钮向上移动,导航栏采用iOS 10导航栏的形式,即其高度。你可以在这里看到它: 我的导航栏带有“首选大标题”的正常状态开: 滚动收藏视图时,一切都会发生: 因此问题很简单:如

  • 问题内容: 我正在开发一个android应用程序,我在每个活动的底部都嵌入了admob广告,并且在所有活动中都显示了admob广告,但是我想在所有活动中始终显示一个admob广告,该广告始终显示,而不会在切换期间破坏自身活动,如果有人知道该问题的解决方案,请帮助我,我有3个活动,并且我还尝试创建一个基类,并使用该基类扩展所有活动,并调用创建和加载广告的函数,但仍然同样的问题,我必须在每个活动类中调

  • 我有一些文本内容显示在UIWebView上,这是普通的html。当前段落以黄色突出显示,用户选择了单词“如果”。(链接到图像:http://i.stack.imgur.com/GKp9h.png) 1)当用户在uiwebiew上选择一些文本时,我如何执行动态高亮?也就是说,当用户选择文本时,选择的文本会以紫色高亮? 例如,我喜欢单词“如果”用紫色突出显示(也许使用window.get选择() ?