NSString+NIMKit.m 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. //
  2. // NSString+NIM.m
  3. // NIMKit
  4. //
  5. // Created by chris.
  6. // Copyright (c) 2015年 NetEase. All rights reserved.
  7. //
  8. #import "NSString+NIMKit.h"
  9. #import <CommonCrypto/CommonDigest.h>
  10. @implementation NSString (NIMKit)
  11. - (CGSize)nim_stringSizeWithFont:(UIFont *)font{
  12. return [self sizeWithAttributes:@{NSFontAttributeName:font}];
  13. }
  14. - (NSString *)nim_MD5String {
  15. const char *cstr = [self UTF8String];
  16. unsigned char result[16];
  17. CC_MD5(cstr, (CC_LONG)strlen(cstr), result);
  18. return [NSString stringWithFormat:
  19. @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
  20. result[0], result[1], result[2], result[3],
  21. result[4], result[5], result[6], result[7],
  22. result[8], result[9], result[10], result[11],
  23. result[12], result[13], result[14], result[15]
  24. ];
  25. }
  26. - (NSUInteger)nim_getBytesLength
  27. {
  28. NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
  29. return [self lengthOfBytesUsingEncoding:enc];
  30. }
  31. - (NSString *)nim_stringByDeletingPictureResolution{
  32. NSString *doubleResolution = @"@2x";
  33. NSString *tribleResolution = @"@3x";
  34. NSString *fileName = self.stringByDeletingPathExtension;
  35. NSString *res = [self copy];
  36. if ([fileName hasSuffix:doubleResolution] || [fileName hasSuffix:tribleResolution]) {
  37. res = [fileName substringToIndex:fileName.length - 3];
  38. if (self.pathExtension.length) {
  39. res = [res stringByAppendingPathExtension:self.pathExtension];
  40. }
  41. }
  42. return res;
  43. }
  44. - (UIColor *)nim_hexToColor
  45. {
  46. unsigned rgbValue = 0;
  47. NSScanner *scanner = [NSScanner scannerWithString:self];
  48. //去掉#
  49. [scanner setScanLocation:1];
  50. [scanner scanHexInt:&rgbValue];
  51. return [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:1.0];
  52. }
  53. @end