zoukankan      html  css  js  c++  java
  • iOS图文存储的一种尝试

    想法基于 iOS7 的 textkit 的基础!

    由于 iOS7 将过去设计图文混排的方法打包到 textkit 当中,所以我们在 iOS7 系统下可以很简单的实现图文混排。

    使用 NSAttributedString 来实现处理,将 NSAttributedString 转化为 NSData 再存储到文件里。

    代码如下:

    @property (weak, nonatomic) IBOutlet UITextView *input;    //文本输入框

    @property (strong, nonatomic) NSMutableAttributedString * context;//存储图文

       _context = _input.textStorage;    //把文本输入框内容赋给存储

       NSString *imageName = @"1.jpg";

       UIImage *image = [UIImage imageNamed:imageName];//通过文件名加载图片,有缓存

       NSTextAttachment *attachment = [[NSTextAttachment alloc] initWithData:nil ofType:nil]; //附件

       attachment.image = image;

       NSAttributedString *textattach = [NSAttributedString attributedStringWithAttachment:attachment];//附件转化为 NSAttributedString

       NSRange range = self.input.selectedRange;    //点击的位置,插入点

       NSInteger i = 0;

       i = range.location;

       [_content insertAttributedString:textattach atIndex:i];   //将图片插入

       NSString *path = [(NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)) objectAtIndex:0];  //获得沙箱的 Document 的地址
       NSString *pathFile = [path stringByAppendingPathComponent:@"text"];  //要保存的文件名

       NSData *data = [_context dataFromRange:NSMakeRange(0, _content.length) documentAttributes:@{NSDocumentTypeDocumentAttribute:NSRTFDTextDocumentType} error:nil];   //将 NSAttributedString 转为NSData

       [data writeToFile:pathFile atomically:YES];  //写入文件

      读取:

    @property (weak, nonatomic) IBOutlet  UITextView *output;

      NSData *outputData = [NSData dataWithContentsOfFile:pathfile];

      NSAttributedString *temp = [[NSAttributedString alloc] initWithData:outputData options:@{NSDocumentTypeDocumentAttribute : NSRTFDTextDocumentType} documentAttributes:nil error:nil];     //读取

      [_output  setAttributedText:temp];   //显示内容 

    注释:这里没考虑图片大小对显示的影响,建议设置大小在插入图片的时候

      

  • 相关阅读:
    OpenCASCADE Chamfer 3D Basics
    OpenCASCADE Chamfer 2D
    .NetCore 连接 Oracle 数据库,直接C# 或者 ORM框架(EFCore、XPO)
    心内科疾病指南
    HttpClient 调用 RestAPI 接口的用法
    在 Blazor 应用中使用 DevExtreme widgets
    2021 最近一次检查甘油三脂,验证苯扎贝特的效果。
    紫鹊界本味湘菜,
    如何Rest接口获取网上的股票数据,有哪些资源?-- 推荐Tushare金融数据
    优秀常用的「资源搜索网站」,收藏
  • 原文地址:https://www.cnblogs.com/marks007/p/4681407.html
Copyright © 2011-2022 走看看