号外每日一记之二 - UIActivityViewController简单使用
来源:互联网 发布:腾讯php招聘 编辑:程序博客网 时间:2024/06/06 07:34
本文参考了关东升的博客http://2009315319.blog.51cto.com/701759/1195374
此项目在使用分享弹框的样式自定义时使用了该控件:UIActivityViewController
UIActivityViewController是iOS 6后,苹果用来替换actionsheet的新的控制器。功能有点类似以前的URL scheme。
在iOS上它以模态出现,而在iPad上则是popover。
苹果已经内置很多UIActivity。社交:天朝有微信微博,外国有推特Facebook。邮件,相机等。
使用也很简单。
一是为现有的UIActivity提供数据。让它们接收你传的数据,并显示相应的UI。这些数据可以是真实的字符串,图片以及URL,也可以是某些对象。作为数据提供者的对象,是有格式要求的,这个要求写在了UIActivityItemSource协议中。你只要实现这些协议方法,就能作为UIActivity的数据提供者了。苹果已经内置了一个实现这些方法的类UIActivityProvider。你可以使用它来简化一些操作。这边引用了一段代码:
- - (IBAction)shareAction:(id)sender {
- NSString *textToShare = @”请大家登录《iOS云端与网络通讯》服务网站。”; ①
- UIImage *imageToShare = [UIImage imageNamed:@"iosshare.jpg"]; ②
- NSURL *urlToShare = [NSURL URLWithString:@"http://www.iosbook3.com"]; ③
- NSArray *activityItems = @[textToShare, imageToShare, urlToShare]; ④
- UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems
- applicationActivities:nil]; ⑤
- //不出现在活动项目
- activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,
- UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll]; ⑥
- [self presentViewController:activityVC animated:TRUE completion:nil]; ⑦
- }
第二种是自定义自己的UIActivity。这边和前边的很类似,不过这边有个自定义的UIActivity。
- - (IBAction)shareAction:(id)sender {
- NSURL *urlToShare = [NSURL URLWithString:@"http://iosshare.cn/"]; ①
- NSArray *activityItems = @[urlToShare];
- BookActivity *bookActivity = [BookActivity new]; ②
- NSArray *applicationActivities = @[bookActivity];
- UIActivityViewController *activityVC = [[UIActivityViewController alloc]
- initWithActivityItems:activityItems
- applicationActivities:applicationActivities]; ③
- [self presentViewController:activityVC animated:YES completion:nil];
- }
既然是自定义的,那么也需要能够处理你传入的数据。UIActivity是一个抽象类,你要使用它的子类,因此你需要继承它,而继承它的同时你又覆盖它的一些方法,来提供对处理这些数据的支持。
打开UIActivity文档,你会发现一些有意思的东西。一个UIActivity的分类包括UIActivityCategoryAction和UIActivityCategoryShare两种。而它的类型一般就是我们的UIActivity名。还需要提供标题和图片。另外的一些方法,看起来有点代理时候的意思。
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems
指明了我们的应用能否对数据源数组作出回应。似乎有点麻烦,整个数组既可以是一组不同类型数据组成的一项,也可以是满足数据提供者的一个数据。如果是真实数据,我们只需要看看数组中有没有我们要处理的数据类型。如果是提供者,我们也得检查下它是否提供了我们关心的数据。- (void)prepareWithActivityItems:(NSArray *)activityItems
这是在回应点击消息前的一些准备,譬如你要处理下数据,再做反应。这时候可以把关键的数据存起来。- (void)performActivity
这时候就真的进行回应了。关于如何响应点击事件的话呢,可以重写父类的方法:
- (void)activityDidFinish:(BOOL)completed;使用completed来判断是否完成回应。
想在UIActivityViewController消失的时候做点啥?
那就用下这个属性 completionHandler。
- 号外每日一记之二 - UIActivityViewController简单使用
- 号外每日一记之二 - UINavigationController简单使用
- 号外每日一记之三 ~ 版本更新小记
- UIActivityViewController简单使用
- iOS UIActivityViewController简单使用
- 每日一记-Maven使用简单小结
- UIActivityViewController使用
- iOS每日一记-----之 简单的按钮切换
- iOS 6新特性UIActivityViewController使用教程(一)
- 每日一问之Serializable的使用
- iOS 每日一记-------简单的地百度地图的使用 简单地定位
- iOS 之UIActivityViewController学习
- iOS开发之UIActivityViewController
- UIActivityViewController的使用
- 【每日一C之二】sizeof 与 strlen
- 【每日一C之二十】 悬空指针
- 【每日一C之二十一】判断栈增长方向
- 【每日一C之二十四】sizeof结构体探究
- 欢迎使用CSDN-markdown编辑器
- C#中的委托(Delegate)和事件(Event)
- HDU - 1097 - A hard puzzle (快速幂取模)
- test
- IC设计常用文件及格式介绍
- 号外每日一记之二 - UIActivityViewController简单使用
- 象笔记一些技巧,提高你的办公效率
- include"xxx.h"和include<xxx.h>有什么区别?
- linux系统的详细启动过程
- hdoj 3790 最短路径问题
- 文件上传下载(转载)
- 励志:郑淳元破产 参加《我是歌手》紧急培训中文三周捞金
- CentOS 文件和目录管理
- LeetCode - Set Matrix Zeroes