iOS在固定的label上动态显示所有文字
程序员文章站
2023-12-20 13:31:16
照例先看下效果图:
思路
创建一个view 作为所有内容的父控件, 并且添加到上面一个 label, 作为显示文字的载体
uilabel* conte...
照例先看下效果图:
思路
创建一个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];
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。