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中的内容,并对其中特定的内容进行转换的方法,不只可以用于对图片内容的转换,可以基于这个思路完成一个简单的文本编辑器。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容