UIDocumentPickerViewController和UIDocumentInteractionController

UIDocumentPickerViewController

补充一下,UIDocumentPickerModeOpen有点像readonly的模式,可以获取到NSURL,但是NSData无法通过NSURL获取真实的数据,建议优先使用UIDocumentPickerModeImport

重点要了解UIDocumentPickerViewController在初始化的时候inMode的四种模式:

  1. UIDocumentPickerModeImport: Import从提供者那里获得文件并拷贝到我们的host app。最经典的应用场景是在内容创建类应用中的使用。例如,像keynote、PowerPoint这样的演示制作应用,希望导入图片,视频,以及音频。它们希望拷贝一份这些数据以此保证它们随时可用。
  2. UIDocumentPickerModeOpen: 和import一样,open同样从文件提供者那里获得数据并导入我们的host app,只是不同的是,这些数据没有被拷贝一份至我们的host app,数据还在原处。例如,你或许在音乐播放器、视频播放器,再或者图像编辑器中使用该方式。
  3. UIDocumentPickerModeExportToService: Export使我们的host app可以保存文件至其它提供者。例如,这些提供者可能是常用的像Dropbox、iCloud Drive这样的云存储系统。host app可以通过export保存文件到提供者的存储空间。在接下来的编辑器例子中,当用户完成编辑,他们可以导出文件,然后稍后可以在其它app中打开这些文件。
  4. UIDocumentPickerModeMoveToService: 除了host app不会持有一份儿文件的拷贝,其它Moving和export差不多。这或许是最不常用的操作,因为大多数iOS apps不是为了抛弃它们的数据才创建的。

UIDocumentInteractionController

这个类相对简单一点,重点是要实现在delegate里面的3个方法, 这样视图控制器才能显示出来:

#pragma mark - UIDocumentInteractionControllerDelegate
-(UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller{
return self;
}
-(UIView *)documentInteractionControllerViewForPreview:(UIDocumentInteractionController *)controller{
return self.view;
}
-(CGRect)documentInteractionControllerRectForPreview:(UIDocumentInteractionController *)controller{
return self.view.bounds;
}

UTI

苹果支持的文件类型使用UTI标识

Apple 文档:https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html

在info.plist上配置app里面支持读取查看支持的文件类型

<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>com.myApp.surpportFiles</string>
<key>LSItemContentTypes</key>
<array>
<string>public.image</string>
<string>public.audio</string>
<string>public.movie</string>
<string>public.data</string>
<string>public.text</string>
<string>public.archive</string>
<string>public.item</string>
<string>public.source-code</string>
</array>
</dict>
</array>

最新文章

  1. 在Parallel中使用DbSet.Add()发现的一系列多线程问题和解决过程
  2. C#中的泛型
  3. JQUERY获取当前页面的URL信息
  4. MWeb 1.4 新功能介绍一:引入文件夹到 MWeb 中管理,支持 Octpress、Jekyll 等静态博客拖拽插入图片和实时预览
  5. PrograssBar的setIndeterminateDrawable不起作用
  6. SQL2005:SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法
  7. Express创建并运行node项目(Jade和EJS模版引擎)
  8. Date and Time Pattern
  9. 一些时间的概念与区分(UTC、GMT、LT、TAI等)
  10. SRM 597
  11. Android 应用间的集成
  12. .net core 在视图中快速获取路由(Areas、Controller、Action)
  13. golang实现aes-cbc-256加密解密过程记录
  14. CompletableFuture基本用法
  15. javaweb学习--jsp
  16. Flex 布局的教程
  17. 将 Windows 虚拟机从非托管磁盘转换为托管磁盘
  18. 三元运算符代替if-else
  19. 利用cookie存放模糊查询的信息
  20. 由web项目中上传图片所引出的路径问题

热门文章

  1. 关于testbench
  2. mybatis(六):设计模式 - 建造者模式
  3. SQL注入 盲注
  4. find &amp; grep 总 结
  5. 常用bat脚本整理
  6. 创建集群corosync
  7. 素问 - REITs
  8. Map.Entry 类使用简介(转)
  9. for await of异步操作集合遍历
  10. javascript当中null和undefined的==和===的比较