最终效果
最终就是要实现这样的效果
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可以反馈给我哦
网友评论
在- (void)copyLabel:(UILabel *)dLabel from:(UILabel *)sLabel方法里面更改如下:
dLabel.attributedText = self.attributedText;
dLabel.text = self.text;
dLabel.font = self.font;
dLabel.numberOfLines = self.numberOfLines;
就有效果了。