研究 UIActivityViewController
来源:互联网 发布:帝国cms绑定二级域名 编辑:程序博客网 时间:2024/05/22 12:02
原文地址:https://github.com/nixzhu/dev-blog/blob/master/2014-04-22-ui-activity-viewcontroller.md
数据与代码的关系一直都让人好奇。
特定的编程语言,如 Lisp、lo 和Mathematica 都是同像性的(homoiconic),意味着它们的代码可作为数据原语呈现,也就是说它们自身就可在代码中被操纵。许多其他语言,包括 Objective-C ,就不同了,在两者之间建立了严格的界限,回避eval()
和其它潜在的危险的动态指示加载方法。
当问题中的数据过大或难以表示为除了字节流之外的任何东西时,那么代码与数据的这种紧张关系就达到了一个新的高度。关于“如何编码、解码以及解释图像、文档和媒体的二进制表示”的问题从最开始的操作系统开始就一直存在着。
OS X 的 Core Services 框架
与 iOS 的移动 Core Services 框架
都提供函数通过通用类型标识符(Universal Type Identifiers,即UTI)来根据文件扩展和MIME类型识别和分类数据类型。UTI提供了可扩展和可继承的分类系统,它能给予开发人员极大的灵活性,即使是处理最奇特的文件类型。例如,一个 Ruby 源代码文件(.rb)被分类为 Ruby 源代码 > 源代码 > 文本 > 内容 > 数据;一个 QuickTime 电影文件(.mov)被分类为视频 > 电影 > 试听内容 > 内容 > 数据;
在桌面文件系统抽象里,UTI工作得相当好。然而,在一个移动范式里,文件和目录对于用户来说都被隐藏了,于是这很快就失效了。而且,更重要的是,云服务和社交媒体的兴起已经让远程实体比本地文件具有更重要的地位。因此,UTI和URL之间出现了紧张关系。
很明显我们需要其它的某种东西。那 UIActivityViewController 能成为我们拼命追求的解决办法吗?
UIActivityViewController ,出现于 iOS 6,在应用里为分享和操作数据提供了一个统一的服务接口。
给出一个可操作数据的集合,那一个 UIActivityViewController 实例就可如下创建:
NSString *string = ...;NSURL *URL = ...;UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[string, URL] applicationActivities:nil];[navigationController presentViewController:activityViewController animated:YES completion:^{ // ...}];
这将在屏幕的底部呈现如下所示的东西:
默认情况下,UIActivityViewController 将显示所有可用于所提供内容的服务,但我们也可以排除特定的 Activity 类型。
activityViewController.excludedActivityTypes = @[UIActivityTypePostToFacebook];
Activity 类型又分为“操作”和“分享”两大类:
UIActivityCategoryAction
- UIActivityTypePrint
- UIActivityTypeCopyToPasteboard
- UIActivityTypeAssignToContact
- UIActivityTypeSaveToCameraRoll
- UIActivityTypeAddToReadingList
- UIActivityTypeAirDrop
UIActivityCategoryShare
- UIActivityTypeMessage
- UIActivityTypeMail
- UIActivityTypePostToFacebook
- UIActivityTypePostToTwitter
- UIActivityTypePostToFlickr
- UIActivityTypePostToVimeo
- UIActivityTypePostToTencentWeibo
- UIActivityTypePostToWeibo
每个 Activity 类型都支持好多种不同的数据类型。例如,一条 Tweet 可能由 NSString 以及一个附加的图像 和/或 URL 所组成。
不同的 Activity 类型所支持的数据类型
<UIActivityItemSource> & UIActivityProvider
- 研究 UIActivityViewController
- 研究 UIActivityViewController
- 研究 UIActivityViewController
- 研究 UIActivityViewController
- UIActivityViewController
- UIActivityViewController
- UIActivityViewController
- UIActivityViewController 相关
- UIActivityViewController使用
- 苹果的UIActivityViewController
- iOS基础 -- UIActivityViewController
- UIActivityViewController简单使用
- iOS开发 - UIActivityViewController详解
- iOS 之UIActivityViewController学习
- iOS原生分享UIActivityViewController
- UIActivityViewController的使用
- iOS UIActivityViewController简单使用
- 初探SocialFramework和UIActivityViewController
- poj1651,区间dp
- 开发指南专题四:JEECG微云快速开发平台--JEECG开发环境搭建
- delphi中formatFloat代码初探
- ponyDebugger 使用感悟
- vim 设置tab 空格
- 研究 UIActivityViewController
- 使用WinDbg内核调试
- 去除myeclipse服务器中用不到的服务
- linux安装mysql
- cocos2d jsb 打包 Android APK
- C++map容器类
- leetcode第一刷_Search in Rotated Sorted Array II
- 最近在调用 calendar.js 的时候出现中文乱码! 解决方案
- 计算两个日期之间的工作日天数