美文网首页项目以及封装iOS进阶常用组件
[iOS] 仿facebook的闪烁Label,很简单

[iOS] 仿facebook的闪烁Label,很简单

作者: ck2016 | 来源:发表于2016-08-26 14:44 被阅读1594次

最终效果

最终就是要实现这样的效果


pic.gif

偶然在 github 上看到 facebook 有个这样的 label,于是想着我也山寨一个吧
我要做个闪光字体,支持多种闪光模式的shimmer label

思路很简单的
下面一个灰色的 grayLabel
上面一个白色的高亮 whiteLabel
还有一个渐变的 CAGradientLayer *gLayer(用法网上非常多,可以去看看)
然后给 gLayer 上个渐变色
然后一句话 whiteLabel.layer.mask = gLayer 就实现高亮了
左右滑动就给 gLayer 加个平移动画就 ok 了,很简单吧

思路拓展
layer 有个 mask 蒙版属性,只要有 layer 的都可以做闪烁效果!!
比如 imageView.layer 等等等等

最后我封装了一个 UILabel 的闪烁文字,一行代码就开启闪烁了,和 facebook 的效果一样,还可以自定义多种样式。
例如:

    self.label1 = [[CKShimmerLabel alloc] init];
    self.label1.text = @"hello world 1";
    [self.label1 startShimmer];                 // 开启闪烁

一些可以修改的属性:

ShimmerType shimmerType;          // 闪烁类型,默认LeftToRight
BOOL repeat;                      // 循环播放,默认是
CGFloat shimmerWidth;             // 闪烁宽度,默认20
CGFloat shimmerRadius;            // 闪烁半径,默认20
UIColor *shimmerColor;            // 闪烁颜色,默认白
NSTimeInterval durationTime;      // 持续时间,默认2秒

// 直接 self.label1.shimmerColor = [UIColor yellowColor]; 就可以修改颜色

想要看代码的可以在这里下载到:

有bug可以反馈给我哦

相关文章

网友评论

  • 4d4950f38cf7:ios11失效了,然后修改好了。
    在- (void)copyLabel:(UILabel *)dLabel from:(UILabel *)sLabel方法里面更改如下:
    dLabel.attributedText = self.attributedText;
    dLabel.text = self.text;
    dLabel.font = self.font;
    dLabel.numberOfLines = self.numberOfLines;
    就有效果了。
    ck2016:@年轻的心_31f1 :+1:
  • McDuff:在iOS 11上没效果了
    ck2016:@McDuff 没适配iOS11,没时间搞了
  • 朋友有朋:666666写的不赖
    ck2016:@朋友有朋 :smirk:

本文标题:[iOS] 仿facebook的闪烁Label,很简单

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