研究 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. 我也把它融入到我的项目当中并进 ...
随机推荐
- CentOS7配置Nodejs环境安装记录
今天购买了阿里云服务器,系统选的是CentOS7,下面记录下在它上面安装Nodejs环境的过程,本次操作是直接连接的阿里云服务器的管理终端. 1.由于是纯净的环境,先通过以下命令安装nodejs编译及 ...
- PSAM读卡芯片TDA8007BHL开发
WWT:Work Waiting Time ATR:Answer To Reset,复位应答 etu =F/Df 1. PSAM概述和应用 PSAM(PurchaseSecure Access ...
- PowerShell 字符串操作符
字符串操作符 格式化操作符 –F 在PowerShell文本操作符中非常重要,经常被用来增强数字类型和日期类型的可读性: "{0} diskettes per CD" -f (72 ...
- Qt编程之对QGraphicsItem点击右键弹出菜单
就是对这个contextMenuEvent 事件重新实现,在这个事件函数中创建菜单,大概就是这样. void MyItem::contextMenuEvent(QGraphicsSceneContex ...
- 黑马程序员_Java面向对象2_继承
4.面向对象_继承 4.1继承的概述 提高了代码的复用性. 让类与类之间产生了关系,有了这个关系,才有多态的特性. 注意:千万不要为了获取其他类的功能而去继承,简化代码而继承.必须是类与类之间有所属关 ...
- socket 网摘
一.基本socket函数 Linux系统是通过提供套接字(socket)来进行网络编程的.网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符.socket也有一个类似于打 开 ...
- IDF实验室解题学习笔记1
1.图片里的英文 图片可以有很多种打开方式,破解该题,需将图片下载下来. 对于图片,我们可以使用图片编辑软件,进行各种调明暗,变色调等操作. 我们还可以使用2进制或者16进制的文件打开方式打开.该图使 ...
- 深入理解linux网络技术内幕读书笔记(四)--通知链
Table of Contents 1 概述 2 定义链 3 链注册 4 链上的通知事件 5 网络子系统的通知链 5.1 包裹函数 5.2 范例 6 测试实例 概述 [注意] 通知链只在内核子系统之间 ...
- hdu2817之整数快速幂
A sequence of numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- Zedboard甲诊opencv图像处理(二)
通过前面的努力已经得到了n个轮廓了,现在要把最终的轮廓确定下来 ,然后进行特征提取. 先深入分析下轮廓和处理轮廓的方法:http://blog.csdn.net/hitwengqi/article/d ...