超出范围自动滚动、支持彩色流动特效的UILabel封装
JKRShimmeringLabel
特征
支持炫彩字
支持炫彩流动字
支持超出显示范围自动滚动文本
支持RTL下的对称显示和滚动
支持Frame布局
支持Xib和StoryBoard内使用
支持AutoLayout布局
使用
和原生UILabel一样用,只需要设置mask属性(一张彩色的图片遮罩)即可。
原有项目的UILabel替换
因为JKRAutoScrollLabel和JKRShimmeringLabel本身就是继承UILabel,可以直接把原有项目的UILabel类,替换成JKRAutoScrollLabel或JKRShimmeringLabel即可。
JKRAutoScrollLabel
超出范围自动滚动的Lable,需要设置attributedText,不能设置text。要同时支持流动彩字,设置mask即可。不需要彩色可以不设置mask,只有自动滚动的特性。
// Frame布局,字体支持炫彩闪动,同时超出显示范围自动滚动
NSMutableAttributedString *textForFrameAttr = [[NSMutableAttributedString alloc] initWithString:@"我是滚动测试文本Frame布局,看看我的效果" attributes:@{NSForegroundColorAttributeName: UIColorHex(FFFFFF), NSFontAttributeName: [UIFont systemFontOfSize:19 weight:UIFontWeightBold]}];
self.autoScrollLabelForFrame = [[JKRAutoScrollLabel alloc] initWithFrame:CGRectMake(isRTL ? kScreenWidth - 10 - 300 : 10, CGRectGetMaxY(title0.frame) + 10, 300, 24)];
// 滚动文本需要设置 attributedText 才能生效
self.autoScrollLabelForFrame.attributedText = textForFrameAttr;
// 设置文字颜色的mask图片遮罩,如果不需要字体炫彩,不设置即可
self.autoScrollLabelForFrame.mask = [self maskImage];
[self.view addSubview:self.autoScrollLabelForFrame];
JKRShimmeringLabel
支持流动彩字,设置mask即可,如果还需要超出范围自动滚动,需要使用JKRAutoScrollLabel。
// Frame布局,字体支持炫彩闪动
self.shimmerLabelForFrame = [[JKRShimmeringLabel alloc] initWithFrame:CGRectMake(isRTL ? kScreenWidth - 10 - 300 : 10, CGRectGetMaxY(title1.frame) + 10, 300, 24)];
self.shimmerLabelForFrame.text = @"我是彩色不滚动文本Frame布局,看看我的效果";
self.shimmerLabelForFrame.font = [UIFont systemFontOfSize:19];
// 设置文字颜色的mask图片遮罩,如果不需要字体炫彩,不设置即可
self.shimmerLabelForFrame.mask = [self maskImage];
[self.view addSubview:self.shimmerLabelForFrame];
Xib使用
控件支持xib和autolayout的场景,和UILabel一样设置约束即可,自动滚动和彩色动画,会自动支持。只需要正常配置约束,然后设置mask彩色遮罩即可。
同时,因为JKRShimmeringLabel和JKRAutoScrollLabel本身就是继承UILabel的,所以UILabel在Xib中的文本自动填充宽度、约束优先级等等特性,也都可以正常使用。
作者:Whip78215
链接:https://juejin.cn/post/7220690079701434405
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://juejin.cn/post/7220690079701434405
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。