研究 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. 我也把它融入到我的项目当中并进 ...
随机推荐
- joomla安装插件报错:上传文件到服务器发生了一个错误。 过小的PHP文件上传尺寸
在安装joomla的AKeeba插件的时候报错如下:上传文件到服务器发生了一个错误. 过小的PHP文件上传尺寸.解决方法是修改php.ini文件,打开文件后搜索upload_max_filesize! ...
- H5页面音频自动播放问题
最近有这么一个需求,需要在手机加载一个页面的时候,自动播放音乐资源.一般情况下,这个问题也就解决了,但是要保证各种手机上表现一致,那就相当困难了,至少要费点儿周折. 下面有三种常规 ...
- web.xml配置DispatcherServlet
1. org.springframework.web.servlet.DispatcherServlet 所在jar包: <dependency> <groupId>org.s ...
- iOS 部分问题总结2 - 苹果审核篇
iOS 部分问题总结(二) - 苹果审核篇 1. 记录下5.1新规后上传被拒的问题排查和解决过程. 几天前,最新一次的更新被拒了,提示Invaild Binary.好在苹果同时发来了说明邮件做了详细说 ...
- 用户控件(.ascx)与<ul><li>以及<a>布局之小结
用户控件(.ascx)与<ul><li>以及<a>布局 小结 一.用户控件(.ascx) 1.aspx是浏览器直接访问的页面,而ascx是用户控件,一般是用来重用. ...
- hdu1047(模拟大量的循环添加)
标题信息:总结多个大整数,(使用add循环相加的功能) http://acm.hdu.edu.cn/showproblem.php? pid=1047 AC代码: /** *大数的循环加法,转化为字 ...
- 生命周期-初识IOS
经常因为生命周期的事情,而视图顺序加载错误,或者出现一系列的小错误并且修改不出来,程序员不知道生命周期确实挺可悲的. IOS生命周期: 自上而下的执行,并且viewDidLoad只会执行一次,所以我们 ...
- JavaScripts学习日记——ECMAscript
1.Function对象 Function是一个很特殊的对象,特殊在该对象就像java中的方法一样,可以运行,可以传参数. 三种定义function对象的方法: 1.function fun1(a,b ...
- .net的WebForm模拟MVC进行模型绑定,让自己少操劳
一.前言 用过MVC的兄弟们都知道,MVC有模型绑定表单提交的数据功能,那么我也想偷个懒也写个WebForm版的模型绑定.这里主要定义一个泛型方法,然后通过反射把表单上对应属性名字的值赋值到反射创建类 ...
- (转)简易WCF负载均衡方案
最近跟高老师讨论nginx跟tomcat集群做负载均衡方案.感觉很有意思.想到自己项目中服务用的WCF技术,于是就想WCF如何做负载均衡,Google了一会,发现wcf4.0的路由服务好像可以实现.不 ...