美文网首页项目以及封装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