ReturnAttributeStr.m 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. //
  2. // ReturnAttributeStr.m
  3. // 天下农商
  4. //
  5. // Created by Mac on 2016/12/30.
  6. // Copyright © 2016年 mirror. All rights reserved.
  7. //
  8. #import "ReturnAttributeStr.h"
  9. //MD5
  10. #import <CommonCrypto/CommonDigest.h>
  11. @implementation ReturnAttributeStr
  12. #pragma mark - 返回图文字符串
  13. + (NSMutableAttributedString *)setAttributeTitle:(NSString * )title imageName:(NSString *)imageName imageRect:(CGRect)rect withIndex:(NSUInteger)index;
  14. {
  15. NSTextAttachment *attch = [[NSTextAttachment alloc] init];
  16. attch.image = [UIImage imageNamed:imageName];
  17. attch.bounds = rect;
  18. NSAttributedString * string1 = [NSAttributedString attributedStringWithAttachment:attch];
  19. NSMutableAttributedString * tittleAttr = [[NSMutableAttributedString alloc]initWithString:title];
  20. [tittleAttr insertAttributedString:string1 atIndex:index];
  21. return tittleAttr;
  22. }
  23. #pragma mark - md5加密
  24. + (NSString *) md5:(NSString *)str
  25. {
  26. const char *cStr = [str UTF8String];
  27. unsigned char result[16]= "0123456789abcdef";
  28. // This is the md5 call
  29. CC_MD5(cStr, (CC_LONG)strlen(cStr), result);
  30. return [NSString stringWithFormat:
  31. @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
  32. result[0], result[1], result[2], result[3],
  33. result[4], result[5], result[6], result[7],
  34. result[8], result[9], result[10], result[11],
  35. result[12], result[13], result[14], result[15]
  36. ];
  37. }
  38. #pragma mark - 封装地址 -
  39. + (NSString *)getAdressWithProvience:(NSString *)provience City:(NSString *)city
  40. {
  41. city = [city stringByReplacingOccurrencesOfString:provience withString:@""];
  42. NSString * adress = [NSString stringWithFormat:@"%@ %@",provience,city];
  43. adress = [adress stringByReplacingOccurrencesOfString:@"自治区" withString:@""];
  44. adress = [adress stringByReplacingOccurrencesOfString:@"回族" withString:@""];
  45. adress = [adress stringByReplacingOccurrencesOfString:@"壮族" withString:@""];
  46. adress = [adress stringByReplacingOccurrencesOfString:@"维吾尔" withString:@""];
  47. adress = [adress stringByReplacingOccurrencesOfString:@"朝鲜族" withString:@""];
  48. adress = [adress stringByReplacingOccurrencesOfString:@"哈尼族" withString:@""];
  49. adress = [adress stringByReplacingOccurrencesOfString:@"彝族" withString:@""];
  50. adress = [adress stringByReplacingOccurrencesOfString:@"土家族" withString:@""];
  51. adress = [adress stringByReplacingOccurrencesOfString:@"苗族" withString:@""];
  52. adress = [adress stringByReplacingOccurrencesOfString:@"藏族" withString:@""];
  53. adress = [adress stringByReplacingOccurrencesOfString:@"回族" withString:@""];
  54. adress = [adress stringByReplacingOccurrencesOfString:@"羌族" withString:@""];
  55. adress = [adress stringByReplacingOccurrencesOfString:@"布依族" withString:@""];
  56. adress = [adress stringByReplacingOccurrencesOfString:@"侗族" withString:@""];
  57. adress = [adress stringByReplacingOccurrencesOfString:@"傣族" withString:@""];
  58. adress = [adress stringByReplacingOccurrencesOfString:@"白族" withString:@""];
  59. adress = [adress stringByReplacingOccurrencesOfString:@"景颇族" withString:@""];
  60. adress = [adress stringByReplacingOccurrencesOfString:@"傈僳族" withString:@""];
  61. adress = [adress stringByReplacingOccurrencesOfString:@"蒙古族" withString:@""];
  62. adress = [adress stringByReplacingOccurrencesOfString:@"地区" withString:@""];
  63. adress = [adress stringByReplacingOccurrencesOfString:@"自治县" withString:@""];
  64. adress = [adress stringByReplacingOccurrencesOfString:@"柯尔克孜" withString:@""];
  65. adress = [adress stringByReplacingOccurrencesOfString:@"哈萨克" withString:@""];
  66. adress = [adress stringByReplacingOccurrencesOfString:@"香港" withString:@""];
  67. adress = [adress stringByReplacingOccurrencesOfString:@"澳门" withString:@""];
  68. adress = [adress stringByReplacingOccurrencesOfString:@"台湾" withString:@""];
  69. if (adress.length < 2)
  70. {
  71. adress = @"老刀网友";
  72. }
  73. NSString * str = [adress substringFromIndex:adress.length-1];
  74. if ([str isEqualToString:@" "])
  75. {
  76. adress = [adress stringByReplacingOccurrencesOfString:@" " withString:@""];
  77. }
  78. return adress;
  79. }
  80. #pragma mark - 返回NSAttributedString
  81. + (NSAttributedString *)returnNSAttributedStringWithDetailStr:(NSString *)labelStr withlineSpacing:(CGFloat)lineSpacing withAlignment:(NSInteger)alignment withFont:(UIFont *)font
  82. {
  83. NSString * detailStr = labelStr;
  84. if (detailStr.length > 0 && ![detailStr isEqualToString:@"<null>"] && ![detailStr isEqualToString:@"(null)"])
  85. {
  86. NSMutableAttributedString * detailAttrString = [[NSMutableAttributedString alloc]initWithString:detailStr];
  87. NSMutableParagraphStyle * detailParagtaphStyle = [[NSMutableParagraphStyle alloc]init];
  88. detailParagtaphStyle.alignment = alignment; //设置两端对齐(3)
  89. detailParagtaphStyle.lineSpacing = lineSpacing; //行间距
  90. NSDictionary * detaiDic = @{NSFontAttributeName : font,
  91. //NSKernAttributeName : [NSNumber numberWithInteger:W(0)],
  92. NSParagraphStyleAttributeName : detailParagtaphStyle,
  93. NSUnderlineStyleAttributeName:[NSNumber numberWithInteger:NSUnderlineStyleNone]};
  94. [detailAttrString setAttributes:detaiDic range:NSMakeRange(0, detailAttrString.length)];
  95. NSAttributedString * resultAttrString = [detailAttrString copy];
  96. return resultAttrString;
  97. }
  98. else
  99. {
  100. return nil;
  101. }
  102. }
  103. #pragma mark - 返回NSAttributedString并且带图片
  104. + (NSAttributedString *)returnNSAttributedStringWithContentStr:(NSString *)labelStr withlineSpacing:(CGFloat)lineSpacing withAlignment:(NSInteger)alignment withFont:(UIFont *)font withImageName:(NSString *)imageName withImageRect:(CGRect)rect withAtIndex:(NSUInteger)index
  105. {
  106. NSString * detailStr = labelStr;
  107. if (detailStr.length > 0 && ![detailStr isEqualToString:@"<null>"] && ![detailStr isEqualToString:@"(null)"])
  108. {
  109. NSMutableAttributedString * detailAttrString = [[NSMutableAttributedString alloc]initWithString:detailStr];
  110. NSMutableParagraphStyle * detailParagtaphStyle = [[NSMutableParagraphStyle alloc]init];
  111. detailParagtaphStyle.alignment = alignment; //设置两端对齐(3)
  112. detailParagtaphStyle.lineSpacing = lineSpacing; //行间距
  113. NSDictionary * detaiDic = @{NSFontAttributeName : font,
  114. //NSKernAttributeName : [NSNumber numberWithInteger:W(0)],
  115. NSParagraphStyleAttributeName : detailParagtaphStyle,
  116. NSUnderlineStyleAttributeName:[NSNumber numberWithInteger:NSUnderlineStyleNone]};
  117. [detailAttrString setAttributes:detaiDic range:NSMakeRange(0, detailAttrString.length)];
  118. //设置图片
  119. NSTextAttachment * attch = [[NSTextAttachment alloc] init];
  120. attch.image = [UIImage imageNamed:imageName];
  121. attch.bounds = rect;
  122. NSAttributedString * string1 = [NSAttributedString attributedStringWithAttachment:attch];
  123. [detailAttrString insertAttributedString:string1 atIndex:index];
  124. NSAttributedString * resultAttrString = [detailAttrString copy];
  125. return resultAttrString;
  126. }
  127. else
  128. {
  129. return nil;
  130. }
  131. }
  132. #pragma mark - 返回不一样额字体大小
  133. /**
  134. * 返回不一样的字体大小
  135. *
  136. * @param needText 文字内容
  137. * @param big 大字体
  138. * @param small 小字体
  139. * @param rangeArray 范围range数组
  140. */
  141. + (NSMutableAttributedString *) returnDifferentFontWithText:(NSString*)needText bigFont:(CGFloat)big smallFont:(CGFloat)small rangeArray:(NSMutableArray *)rangeArray;
  142. {
  143. NSMutableAttributedString * attrString = [[NSMutableAttributedString alloc] initWithString:needText];
  144. UIFont * bigFont = [UIFont systemFontOfSize:big];
  145. UIFont * smallFont = [UIFont systemFontOfSize:small];
  146. [attrString addAttribute:NSFontAttributeName value:smallFont range:NSMakeRange( 0, needText.length)];
  147. for ( NSValue * value in rangeArray)
  148. {
  149. [attrString addAttribute:NSFontAttributeName value:bigFont range:value.rangeValue];
  150. }
  151. return attrString;
  152. }
  153. #pragma mark - 返回不一样字体颜色 (仅两种字体颜色)
  154. /**
  155. * 返回不一样字体颜色
  156. *
  157. * @param labelStr 文字内容
  158. * @param lineSpacing 行间距
  159. * @param alignment 居中?
  160. * @param rangArray 范围range数组
  161. * @param color 目标字体颜色
  162. */
  163. + (NSAttributedString *)returnDifferentTextColorWithText:(NSString *)labelStr lineSpacing:(CGFloat)lineSpacing alignment:(NSInteger)alignment rangArray:(NSMutableArray *)rangArray color:(UIColor *)color
  164. {
  165. NSString * detailStr = labelStr;
  166. if (isStr(detailStr))
  167. {
  168. NSMutableAttributedString * detailAttrString = [[NSMutableAttributedString alloc]initWithString:detailStr];
  169. NSMutableParagraphStyle * detailParagtaphStyle = [[NSMutableParagraphStyle alloc]init];
  170. detailParagtaphStyle.alignment = alignment; //设置两端对齐(3)
  171. detailParagtaphStyle.lineSpacing = lineSpacing; //行间距
  172. NSDictionary * detaiDic = @{NSParagraphStyleAttributeName : detailParagtaphStyle,
  173. NSUnderlineStyleAttributeName:[NSNumber numberWithInteger:NSUnderlineStyleNone]};
  174. [detailAttrString addAttributes:detaiDic range:NSMakeRange(0, detailAttrString.length)];
  175. for (NSValue * rangeVal in rangArray)
  176. {
  177. [detailAttrString addAttributes:@{NSForegroundColorAttributeName : color} range:rangeVal.rangeValue];
  178. }
  179. NSAttributedString * resultAttrString = [detailAttrString copy];
  180. return resultAttrString;
  181. }
  182. else
  183. {
  184. return nil;
  185. }
  186. }
  187. #pragma mark - 返回不一样字体颜色 (仅两种字体颜色) 并带有图片
  188. /**
  189. 返回不一样字体颜色 (仅两种字体颜色) 并带有图片
  190. @param title 内容
  191. @param imageName 图片
  192. @param rect 图片Frame
  193. @param color 内容颜色
  194. @param index 图片位置
  195. @param rangArray 范围range数组
  196. @param color2 目标颜色
  197. */
  198. + (NSAttributedString *)returnDifferentTextColorAndImageWithText:(NSString * )title imageName:(NSString *)imageName imageRect:(CGRect)rect color:(NSString *)color index:(NSUInteger)index rangArray:(NSMutableArray *)rangArray color2:(UIColor *)color2
  199. {
  200. NSTextAttachment * attch = [[NSTextAttachment alloc] init];
  201. attch.image = [UIImage imageNamed:imageName];
  202. attch.bounds = rect;
  203. NSAttributedString *string1 = [NSAttributedString attributedStringWithAttachment:attch];
  204. NSMutableAttributedString *tittleAttr = [[NSMutableAttributedString alloc]initWithString:title];
  205. [tittleAttr insertAttributedString:string1 atIndex:index];
  206. [tittleAttr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithHexString:color] range:NSMakeRange(0,tittleAttr.length)];
  207. for (NSValue * rangeVal in rangArray)
  208. {
  209. [tittleAttr addAttributes:@{NSForegroundColorAttributeName : color2} range:rangeVal.rangeValue];
  210. }
  211. return tittleAttr;
  212. }
  213. @end