NSString+ex.m 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //
  2. // NSString+ex.m
  3. // LNManager
  4. //
  5. // Created by EchoShacolee on 2017/4/6.
  6. // Copyright © 2017年 lee. All rights reserved.
  7. //
  8. #import "NSString+ex.h"
  9. #import<CommonCrypto/CommonDigest.h>
  10. @implementation NSString (ex)
  11. - (NSString *)md5Encrypt
  12. {
  13. const char *cStr = [self UTF8String];
  14. unsigned char result[16];
  15. CC_MD5( cStr, (unsigned int)strlen(cStr), result );
  16. NSString* str = [NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
  17. result[0], result[1], result[2], result[3],
  18. result[4], result[5], result[6], result[7],
  19. result[8], result[9], result[10], result[11],
  20. result[12], result[13], result[14], result[15]
  21. ];
  22. str = [str lowercaseString];
  23. return str;
  24. }
  25. -(CGFloat)heightForWid:(CGFloat)wid Font:(CGFloat)fontSize
  26. {
  27. if (self.length == 0) {
  28. return 0;
  29. }
  30. //NSStringDrawingUsesFontLeading这个参数是计算多行文本时用的参数
  31. CGRect rect = [self boundingRectWithSize:CGSizeMake(wid, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:fontSize]} context:nil];
  32. //由于计算出来的值比实际需要的值略小,故需要对其向上取整
  33. double height = ceil(rect.size.height);
  34. return height;
  35. }
  36. -(CGFloat)widthForFont:(CGFloat)fontSize
  37. {
  38. return [self boundingRectWithSize:CGSizeMake(MAXFLOAT, 20) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont scaleSize:fontSize]} context:nil].size.width;
  39. }
  40. @end