CFGradientLabel.m 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. //
  2. // TestLabel.m
  3. // 38-文字渐变色-C
  4. //
  5. // Created by 于 传峰 on 15/7/27.
  6. // Copyright (c) 2015年 于 传峰. All rights reserved.
  7. //
  8. #import "CFGradientLabel.h"
  9. @implementation CFGradientLabel
  10. - (void)drawRect:(CGRect)rect
  11. {
  12. // CGSize textSize = [self.text sizeWithAttributes:@{NSFontAttributeName : self.font}];
  13. // CGRect textRect = (CGRect){0, 0, textSize};
  14. //
  15. // // 画文字(不做显示用 主要作用是设置layer的mask)
  16. // CGContextRef context = UIGraphicsGetCurrentContext();
  17. // [self.textColor set];
  18. // [self.text drawWithRect:rect options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : self.font} context:NULL];
  19. //
  20. // // 坐标 (只对设置后的画到context起作用 之前画的文字不起作用)
  21. // CGContextTranslateCTM(context, 0.0f, rect.size.height- (rect.size.height - textSize.height)*0.5);
  22. // CGContextScaleCTM(context, 1.0f, -1.0f);
  23. //
  24. // CGImageRef alphaMask = NULL;
  25. // alphaMask = CGBitmapContextCreateImage(context);
  26. // CGContextClearRect(context, rect);// 清除之前画的文字
  27. //
  28. //
  29. // // 设置mask
  30. // CGContextClipToMask(context, rect, alphaMask);
  31. //
  32. // // 画渐变色
  33. //
  34. // CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
  35. // CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef)self.colors, NULL);
  36. // CGPoint startPoint = CGPointMake(textRect.origin.x+1,
  37. // textRect.origin.y+1);
  38. // CGPoint endPoint = CGPointMake(textRect.origin.x+1,
  39. // textRect.origin.y + textRect.size.height-1);
  40. // CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
  41. //
  42. // // 释放内存
  43. // CGColorSpaceRelease(colorSpace);
  44. // CGGradientRelease(gradient);
  45. // CFRelease(alphaMask);
  46. CGContextRef context = UIGraphicsGetCurrentContext();
  47. CGContextSetLineWidth(context, self.outLineWidth);
  48. CGContextSetLineJoin(context, kCGLineJoinRound);
  49. CGContextSetTextDrawingMode(context, kCGTextStroke);
  50. self.textColor = self.outLinetextColor;
  51. [super drawTextInRect:rect];
  52. self.textColor = self.labelTextColor;
  53. CGContextSetTextDrawingMode(context, kCGTextFill);
  54. [super drawTextInRect:rect];
  55. }
  56. @end