iOS标签实现文字渐变色效果

  

  

前一段时间公司有需求做文字的的渐变色,自己当时也是网上看了一些,自己写了两个方法,实现了需求,写了很久了,只是现在才想起来,就当继续学习了。分享出来供大家参考学习、下面来看看详细的介绍:

  

        - (void) addGradientRampWithColors: (NSArray *)颜色的文本:文本(NSString *) {//标签在父视图上的(x, y)的值不是中心点   CGPoint点=CGPointMake (500);   UILabel *标签=[[UILabel alloc] init);   标签。文本=文本;   标签。字体=[UIFont systemFontOfSize: 20);//标签。textAlignment=NSTextAlignmentCenter;   (标签sizeToFit);//标签的中心和想象的一样啦! !   标签。中心=CGPointMake(点。x + CGRectGetWidth (label.bounds)/2点。y - CGRectGetHeight (label.bounds)/2);   (自我。视图addSubview:标签);//这个标签是和上面的标签是对齐的哦,之前都不好对齐,用这样的方法设置框架就好了//UILabel * infoTextLabel=[[UILabel alloc] init];//infoTextLabel.frame=CGRectMake (label.center。x - CGRectGetWidth (label.bounds)/2点。y + 220、50);//infoTextLabel。文本=@”你说的是哦”;//infoTextLabel。字体=[UIFont systemFontOfSize: 20);//infoTextLabel。写成backgroundColor=[用户界面颜色redColor];//infoTextLabel。numberOfLines=0;//infoTextLabel。textAlignment=NSTextAlignmentLeft;//infoTextLabel。输入textColor=[用户界面颜色blueColor];//[infoTextLabel sizeToFit];//(自我。视图addSubview infoTextLabel):;//在后面添加渐变图层   CAGradientLayer * gradientLayer=(CAGradientLayer层);   gradientLayer.frame=label.frame;   gradientLayer。颜色=颜色;//渐变的方向(0,0)(0,1)(1,0)(1,1)为四个顶点方向//(即。左下角(0,0)//层,[1]是右上角)。默认值//[。5、0]和[5,1]   gradientLayer。曾经繁荣=CGPointMake (0,1);   gradientLayer。端点=CGPointMake (1,1);   (self。view。层addSublayer gradientLayer):;   gradientLayer。掩码=label.layer;   label.frame=gradientLayer.bounds;   }      

自己觉得这样的方法用起来不是很方便,所以接下来是另一种方法:
  

  

<强> m文件

        @ implementation CFGradientLabel      - (void)绘制矩形:(CGRect中)矩形{      CGSize textSize=[自我。文本sizeWithAttributes: @ {NSFontAttributeName: self.font}];   CGRect中textRect=(CGRect中){0 0 textSize};//画文字(不做显示用,主要作用是设置层的面具)   CGContextRef上下文=UIGraphicsGetCurrentContext ();   (自我。输入textColor设置);   (自我。文本drawWithRect:矩形选择:NSStringDrawingUsesLineFragmentOrigin属性:@ {NSFontAttributeName:自我。字体}上下文:NULL];//坐标(只对设置后的画到上下文中起作用,之前画的文字不起作用)   CGContextTranslateCTM(上下文,0.0 f, rect.size。——(rect.size高度。高度- textSize.height) * 0.5);   CGContextScaleCTM(上下文、1.0度、-1.0度);      CGImageRef alphaMask=CGBitmapContextCreateImage(上下文);   CGContextClearRect(上下文、矩形);//清除之前画的文字//设置的面具   CGContextClipToMask(上下文、矩形alphaMask);//画渐变色   CGColorSpaceRef色彩=CGColorSpaceCreateDeviceRGB ();   CGGradientRef梯度=CGGradientCreateWithColors(色彩,(__bridge CFArrayRef)自我。颜色,NULL);   CGPoint曾经繁荣=CGPointMake (textRect.origin.x,   textRect.origin.y);   CGPoint端点=CGPointMake (textRect.origin。x + textRect.size.width,   textRect.origin。y + textRect.size.height);   CGContextDrawLinearGradient(上下文,梯度,曾经繁荣,端点,kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);//释放内存   CGColorSpaceRelease(色彩);   CGGradientRelease(梯度);   CFRelease (alphaMask);   }      

<>强。h文件

        @ interface CFGradientLabel: UILabel      @ property(原子、强)NSArray *颜色;      @end      

<强>接下来是调用的方法,修改了一下的

        - (void) addGradientLabelWithFrame: (CGPoint)点gradientText: (NSString *)文本infoText: (NSString *) infoText颜色:颜色(NSArray *)字体:字体(UIFont *) {      静态NSInteger labelTag=200;   CFGradientLabel *标签=[[CFGradientLabel alloc] init);   lable文本=文本;   lable字体=字体;   lable标签=labelTag;   labletextAlignment=NSTextAlignmentCenter;   (标签sizeToFit];//之前项目的时候设置了为0,忘了注释,所以有的小伙伴用的时候就不显示了……(^ - ^)//标签。α=0;   lable中心=点;   lable颜色=颜色;   (自我。视图addSubview:标签);   }

iOS标签实现文字渐变色效果