iOS图文混排与NSString转换

图文混排是iOS开发中经常遇到的一个场景,网上的教程往往只说明了如何将一篇图文混合的内容展示出来,而忽略了将一篇图文混合的内容翻译为约定的数据,从而进行存储和传输使用。

iOS7.0之后可以使用NSTextAttachment与NSAttributedString完成图文混排的展示

- (NSAttributedString*)attributedStringWithImage:(UIImage*)image
{
  NSTextAttachment*attch = [[NSTextAttachment alloc]init];
  attch.image= image;
  attch.bounds=CGRectMake(0,0,32,32);//设置图片大小
  return [NSAttributedString attributedStringWithAttachment:attch];
}

完成了图文混排的展示后,需要将混排的内容转换成String使用
- (NSString *)stringFromAttributedString:(NSAttributedString *)attr
{
NSMutableAttributedString * resutlAtt = [[NSMutableAttributedString alloc]initWithAttributedString:attr];
// 这个方法是文本结尾开始向前列举,可以放心使用replace方法而不用担心替换后range发生变化导致问题
[attr enumerateAttributesInRange:NSMakeRange(0, attr.length) options:NSAttributedStringEnumerationReverse usingBlock:^(NSDictionary *attrs, NSRange range, BOOL *stop) {
NSTextAttachment * textAtt = attrs[@"NSAttachment"]; // 从字典中取得那一个图片
if (textAtt)
{
UIImage * image = textAtt.image;
[resutlAtt replaceCharactersInRange:range withString:[self stringWithImage:image]];
}
}];
return resutlAtt.string;
}

- (NSString *)stringWithImage:(UIImage *)image
{
  NSString *result = @"";
  /**
   *  将图片翻译成你所需要的内容
   **/
  return result;
}

通过列举NSAttributedString中的内容,并对其中特定的内容进行转换的方法,不只可以用于对图片内容的转换,可以基于这个思路完成一个简单的文本编辑器。

你可能感兴趣的:(iOS图文混排与NSString转换)