研究 UIActivityViewController
研究 UIActivityViewController
发布于:2014-04-25 09:51阅读数:5903
特定的编程语言,如 Lisp、lo 和 Mathematica 都是同像性的(homoiconic),意味着它们的代码可作为数据原语呈现,也就是说它们自身就可在代码中被操纵。许多其他语言,包括 Objective-C ,就不同了
“”

- NSString *string = ...;
- NSURL *URL = ...;
- UIActivityViewController *activityViewController =
- [[UIActivityViewController alloc] initWithActivityItems:@[string, URL]
- applicationActivities:nil];
- [navigationController presentViewController:activityViewController
- animated:YES
- completion:^{
- // ...
- }];

- activityViewController.excludedActivityTypes = @[UIActivityTypePostToFacebook];


- - (id)activityViewController:(UIActivityViewController *)activityViewController
- itemForActivityType:(NSString *)activityType
- {
- if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
- return NSLocalizedString(@"Like this!");
- } else if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
- return NSLocalizedString(@"Retweet this!");
- } else {
- return nil;
- }
- }


- static NSString * const HIPMustachifyActivityType = @"com.nshipster.activity.Mustachify";
- #pragma mark - UIActivity
- + (UIActivityCategory)activityCategory {
- return UIActivityCategoryAction;
- }
- - (NSString *)activityType {
- return HIPMustachifyActivityType;
- }
- - (NSString *)activityTitle {
- return NSLocalizedString(@"Mustachify", nil);
- }
- - (UIImage *)activityImage {
- if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) {
- return [UIImage imageNamed:@"MustachifyUIActivity7"];
- } else {
- return [UIImage imageNamed:@"MustachifyUIActivity"];
- }
- }
- static NSArray * HIPMatchingURLsInActivityItems(NSArray *activityItems) {
- return [activityItems filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:
- ^BOOL(id item, __unused NSDictionary *bindings) {
- if ([item isKindOfClass:[NSURL class]] &&
- ![(NSURL *)item isFileURL]) {
- return [[(NSURL *)item pathExtension] caseInsensitiveCompare:@"jpg"] == NSOrderedSame ||
- [[(NSURL *)item pathExtension] caseInsensitiveCompare:@"png"] == NSOrderedSame;
- }
- return NO;
- }]];
- }
- - (BOOL)canPerformWithActivityItems:(NSArray *)activityItems {
- return [HIPMatchingURLsInActivityItems(activityItems) count] > 0;
- }
- - (void)prepareWithActivityItems:(NSArray *)activityItems {
- static NSString * const HIPMustachifyMeURLFormatString = @"http://mustachify.me/%d?src=%@";
- self.imageURL = [NSURL URLWithString:[NSString stringWithFormat:HIPMustachifyMeURLFormatString, self.mustacheType, [HIPMatchingURLsInActivityItems(activityItems) firstObject]]];
- }
- typedef NS_ENUM(NSInteger, HIPMustacheType) {
- HIPMustacheTypeEnglish,
- HIPMustacheTypeHorseshoe,
- HIPMustacheTypeImperial,
- HIPMustacheTypeChevron,
- HIPMustacheTypeNatural,
- HIPMustacheTypeHandlebar,
- };
- @interface HIPMustachifyWebViewController : UIViewController <UIWebViewDelegate>
- @property (readonly, nonatomic, strong) UIWebView *webView;
- @end
- - (UIViewController *)activityViewController {
- HIPMustachifyWebViewController *webViewController = [[HIPMustachifyWebViewController alloc] init];
- NSURLRequest *request = [NSURLRequest requestWithURL:self.imageURL];
- [webViewController.webView loadRequest:request];
- return webViewController;
- }
- HIPMustachifyActivity *mustacheActivity = [[HIPMustachifyActivity alloc] init];
- UIActivityViewController *activityViewController =
- [[UIActivityViewController alloc] initWithActivityItems:@[imageURL]
- applicationActivities:@[mustacheActivity];
- NSURL *URL = [NSURL URLWithString:@"http://nshipster.com"];
- [[UIApplication sharedApplication] openURL:URL];
- @import SafariServices;
- NSURL *URL = [NSURL URLWithString:@"http://nshipster.com/uiactivityviewcontroller"];
- [[SSReadingList defaultReadingList] addReadingListItemWithURL:URL
- title:@"NSHipster"
- previewText:@"..."
- error:nil];
- UIImage *image = ...;
- id completionTarget = self;
- SEL completionSelector = @selector(didWriteToSavedPhotosAlbum);
- void *contextInfo = NULL;
- UIImageWriteToSavedPhotosAlbum(image, completionTarget, completionSelector, contextInfo);
- @import MessageUI;
- MFMessageComposeViewController *messageComposeViewController = [[MFMessageComposeViewController alloc] init];
- messageComposeViewController.delegate = self;
- messageComposeViewController.recipients = @[@"mattt@nshipster•com"];
- messageComposeViewController.body = @"Lorem ipsum dolor sit amet";
- [navigationController presentViewController:messageComposeViewController animated:YES completion:^{
- // ...
- }];
- @import MessageUI;
- MFMailComposeViewController *mailComposeViewController = [[MFMailComposeViewController alloc] init];
- [mailComposeViewController setToRecipients:@[@"mattt@nshipster•com"]];
- [mailComposeViewController setSubject:@"Hello"];
- [mailComposeViewController setMessageBody:@"Lorem ipsum dolor sit amet"
- isHTML:NO];
- [navigationController presentViewController:mailComposeViewController animated:YES completion:^{
- // ...
- }];
- @import Twitter;
- TWTweetComposeViewController *tweetComposeViewController =
- [[TWTweetComposeViewController alloc] init];
- [tweetComposeViewController setInitialText:@"Lorem ipsum dolor sit amet."];
- [self.navigationController presentViewController:tweetComposeViewController
- animated:YES
- completion:^{
- //...
- }];


研究 UIActivityViewController的更多相关文章
- iOS-微信分享多张图片(UIActivityViewController多图分享和多图分享失败)
前言 微信分享到朋友圈,可分享的类型有:文字类型.图片类型.音乐类型.视频类型和网页类型,但是我们在做图片分享的时候发现微信给的API只能分享一张图片,达不到一些APP的需求,而产品汪或者Boss想要 ...
- IOS6 新特性之UIActivityViewController详解
新的IOS6增加了一些新特性.因为应用需要,所以在国庆的几天里.研究了一下IOS6的说明文档,然后大概地总结了一下UIActivityViewController的用法与大家分享. 首先 从实际效果入 ...
- 闲来无聊,研究一下Web服务器 的源程序
web服务器是如何工作的 1989年的夏天,蒂姆.博纳斯-李开发了世界上第一个web服务器和web客户机.这个浏览器程序是一个简单的电话号码查询软件.最初的web服务器程序就是一个利用浏览器和web服 ...
- SQLSERVER聚集索引与非聚集索引的再次研究(上)
SQLSERVER聚集索引与非聚集索引的再次研究(上) 上篇主要说聚集索引 下篇的地址:SQLSERVER聚集索引与非聚集索引的再次研究(下) 由于本人还是SQLSERVER菜鸟一枚,加上一些实验的逻 ...
- 深入研究Visual studio 2017 RC新特性
在[Xamarin+Prism开发详解三:Visual studio 2017 RC初体验]中分享了Visual studio 2017RC的大致情况,同时也发现大家对新的Visual Studio很 ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- 对一致性Hash算法,Java代码实现的深入研究
一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...
- SQLSERVER聚集索引与非聚集索引的再次研究(下)
SQLSERVER聚集索引与非聚集索引的再次研究(下) 上篇主要说了聚集索引和简单介绍了一下非聚集索引,相信大家一定对聚集索引和非聚集索引开始有一点了解了. 这篇文章只是作为参考,里面的观点不一定正确 ...
- 开源Word读写组件DocX 的深入研究和问题总结
一. 前言 前两天看到了asxinyu大神的[原创]开源Word读写组件DocX介绍与入门,正好我也有类似的自动生成word文档得需求,于是便仔细的研究了这个DocX. 我也把它融入到我的项目当中并进 ...
随机推荐
- SSH三者作用
Struts在项目中的作用 Struts 在项目主要起控制作用,只要用于web层(即视图层和控制层)Struts本身是使用典型的MVC结构实现的,项目中使用了struts之后就等于项目也是一个MVC结 ...
- cf C. Find Maximum
http://codeforces.com/contest/353/problem/C 先预处理前i个数的和,然后找到第一个出现的1,然后变成0后的和与目前的和比较,如果大就更新. #include ...
- Codeforces 509C Sums of Digits
http://codeforces.com/contest/509/problem/C 题目大意: 给出一个序列,代表原序列对应位置数的每一位的数字之和,原序列单调递增,问原序列的最后一个数最小的方 ...
- C#使用.net.mail配置163邮箱报错:不允许使用邮箱名称。 服务器响应为:authentication is required,smtp9,DcCowABHK4UYE11W2k6fAQ--.52196S2 1448940312
client.UseDefaultCredentials = true; 要放在 client.Credentials = new NetworkCredential("用户名", ...
- Linux企业级项目实践之网络爬虫(4)——主程序流程
当我们设计好程序框架之后就要开始实现它了.第一步当然是要实现主程序的流程框架.之后我们逐渐填充每个流程的细节和其需要调用的模块. 主程序的流程如下: 1. 解析命令行参数,并根据参数跳转到相应的处理 ...
- 2014.7.8模拟赛【笨笨当粉刷匠】|bzoj1296 [SCOI]粉刷匠
笨笨太好玩了,农田荒芜了,彩奖用光了,笨笨只好到处找工作,笨笨找到了一份粉刷匠的工作.笨笨有n条木板需要被粉刷.每条木板被分成m个格子,每个格子要被刷成红色或蓝色.笨笨每次粉刷,只能选择一条木板上一段 ...
- web.xml配置DispatcherServlet
1. org.springframework.web.servlet.DispatcherServlet 所在jar包: <dependency> <groupId>org.s ...
- APP常用模块
2016年上半年 APICloud合作云服务商提供了各种类型模块多达45个 其中最新发布的重要模块有 美洽客服模块 亲加视频直播相关模块 保利威视视频播放器模块 苹果银联支付模块 贝宝支付模块 谷歌分 ...
- 域名地址默认跳转到www(301重定向)
要做这个操作之前,你首先必须肯定要有一个域名..... 然后域名指向了某一个外网主机地址,能正常访问网站 IIS7之后版本的看客继续往下看,IIS7之前的版本,请止步,我没有对之前的版本做过 首先确认 ...
- first day for new job
第一天上班,做个总结. 总得来说,感觉非常不错,一个结论~保持头脑清醒,好好加油. 今天主要办一些入职手续,拿到了代码,后面几天主要就是熟悉应用的功能.源代码.想好好制定个计划,定日目标. 1.功能结 ...