【我就看看不说话】UIActivity
来源:互联网 发布:fm2017坎特数据 编辑:程序博客网 时间:2024/04/25 17:57
在iOS
通过动作选单上的选择按钮,可以把图片分享给别人。但是随着iOS功能的不断增加,需要分享的内容越来越多,它会以模态视图方式呈现。iPad设备的分享列表,它会以Popover视图方式呈现。
从图中可以看出分享列表中可以有很多页,每页有9个应用,可以左右滑动翻页,这样就可以共享更多的内容了。
内置活动列表项
分享列表使用UIActivityViewController
下面我们通过一个实例介绍一下使用UIActivityViewController
我们下面介绍一下代码实现部分,代码参考ViewController.m的shareAction:方法:
- -
(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, UIActivityTypeCopyToPast eboard, -
- UIActivityTypeAssignToCo
ntact,UIActivityTypeSaveToCame raRoll]; ⑥ -
- [self
presentViewController:activityVC animated:TRUE completion:nil]; ⑦ -
- }
后面选择微博,以及发送微博这些全部是UIActivityViewController
自定义活动列表项
有的时候根据我们共享内容不同,需要自动定义活动列表项。例如:你的应用是一个观看视频的应用,那么你可能需要共享视频到“优酷”视频网站。下面这一节我们介绍自定义活动列表项。
凡是继承UIActivity抽象类的子类对象都可以放在列表中呈现出来。这包括了iOS系统通过内置的9个活动列表,也可以是我们自定义的列表项。
下面我们通过一个实例介绍一下使用UIActivityViewController
我们下面介绍一下代码实现部分,代码参考ViewController.m的shareAction:方法:
- -
(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]; -
- }
shareAction:方法与上一节内置活动列表项类似,在本例中我们只需要一个数据项(即提供URL),第①行代码就是提供了URL。第②行代码实例化活动列表项BookActivity,然后需要把它放到一个NSArray集合中。第③行代码实例化UIActivityViewController
自定义活动列表项代码实现BookActivity.h的代码如下:
- #import
-
-
-
- @interface
BookActivity : UIActivity -
-
-
- @property
(nonatomic,strong) NSURL *url; -
-
-
- @end
自定义活动列表项必须继承UIActivity,属性url提供列表项服务的数据项。BookActivity.m的代码如下:
- @implementation
BookActivity -
-
-
- -
(NSString *)activityType { -
- return
NSStringFromClass([self class]);① -
- }
-
-
-
- -
(NSString *)activityTitle { -
- return
NSLocalizedStringFromTab le(@”Open Book”, @”BookActivity”, nil); ② -
- }
-
-
-
- -
(UIImage *)activityImage { -
- return
[UIImage "Book"];imageNamed:@ ③ -
- }
-
-
-
- -
(BOOL)canPerformWithActivityIt ems:(NSArray *)activityItems { -
- for
(id activityItem in activityItems) { ④ -
- if
([activityItem class]])isKindOfClass:[NSURL { ⑤ -
- if
([[UIApplication sharedApplication] canOpenURL:activityItem]) { ⑥ -
- return
YES; -
- }
-
- }
-
- }
-
- return
NO; -
- }
-
-
-
- -
(void)prepareWithActivityItems :(NSArray *)activityItems { -
- for
(id activityItem in activityItems) { -
- if
([activityItem class]])isKindOfClass:[NSURL { ⑦ -
- _url
= activityItem; ⑧ -
- }
-
- }
-
- }
-
-
-
- -
(void)performActivity { -
- BOOL
completed = [[UIApplication sharedApplication] openURL:_url]; ⑨ -
- [self
activityDidFinish:completed]; ⑩ -
- }
-
- @end
- 【我就看看不说话】UIActivity
- 【我就看看不说话】NSAttributedString
- 【我就看看不说话】 UIActionSheet
- 【我就看看不说话】UIAlertView
- 【我就看看不说话】UIAppearance
- 【我就看看不说话】UITextField
- 【我就看看不说话】 svn
- 【我就看看不说话】常用函数
- 【我就看看不说话】读取通讯录
- 【我就看看不说话】Block 使用
- 【我就看看不说话】NSDate 日期
- 【我就看看不说话】nsstring 使用
- 【我就看看不说话】xcode 快捷键
- 【我就看看不说话】有用网站
- 【我就看看不说话】ios 指南
- 【我就看看不说话】自动布局
- 【我就看看不说话】UITextView NSTextContainer NSLayoutManager NSTextStorage
- 【我就看看不说话】证书的制作
- 简单了解 函数重载与函数模板
- 日拱一卒(五十二)
- oveWindow下出现Debug Assertion Failed!
- ODBC学习(一)基本理论
- test
- 【我就看看不说话】UIActivity
- VC维与DNN的Boundary
- 黑马程序员——多线程基本概念
- 3-28(错误的 错在哪儿呢)
- spark源码学习(二)------------spark-shell启动分析
- 增强for循环
- C++ Tutorial: Sockets - Server & Client using QT - 2015
- Mongodb安装
- POJ 1351 Number of Locks (记忆化搜索 状态压缩)