研究 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. 我也把它融入到我的项目当中并进 ...
随机推荐
- 让C程序更高效的10种方法
http://blog.jobbole.com/1198/ 代码之美,不仅在于为一个给定问题找到解决方案,而且还在代码的简单性.有效性.紧凑性和效率(内存).代码设计比实际执行更难 .因此,每一个程序 ...
- [HDU] 2063 过山车(二分图最大匹配)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=2063 女生为X集合,男生为Y集合,求二分图最大匹配数即可. #include<cstdio> ...
- QuickTime 专业版 pro 注册码
打开QuickTime Player下拉编辑菜单--选偏好设置--注册 Name: Dawn M Fredette Key: 4UJ2-5NLF-HFFA-9JW3-X2KV 重新启动 QuickTi ...
- Nexus Root Toolkit教程——刷机
Nexus Root Toolkit是Nexus系列设备专属解锁.root.刷机.修复工具.本教程以Nexus7二代刷安卓5.0 Lollipop系统为实例演示刷机过程. 标签: 安卓5.0刷机教程 ...
- 转:AM335x启动流程(BootRom->MLO->Uboot)
http://blog.chinaunix.net/uid-28458801-id-3486399.html 参考文件: 1,AM335x ARM Cortex-A8 Microprocessors ...
- 自定义Window进入和退出效果(转)
看了android的源代码和资源文件,终于明白如何去修改设置Dialog和Activity的进入和退出效果了. 设置Dialog首先通过getWindow()方法获取它的窗口, 然后通过getAttr ...
- Codeforces 596D Wilbur and Trees
http://codeforces.com/contest/596/problem/D 题目大意: 有n棵树排成一排,高度都为h. 主人公要去砍树,每次等概率地随机选择没倒的树中最左边的树或者最右边的 ...
- CentOS6.5切换 语言(附带6.5官方下载地址)
1 在终端中输入命令[sudo vim /etc/sysconfig/i18n]来编辑i18n文件, 2 把“zh_CN.UTF-8”修改为“en_US.UTF-8”, 3 保存修改并退出,如果提示这 ...
- Android Studio:Unable to add window android.view.ViewRootImpl$W@5e2d85a -- permission denied for this window 第一行代码
学习<第一行代码>的时候,出现的错误. java.lang.RuntimeException: Unable to start receiver com.example.sevenun.l ...
- 正则表达式获取URL参数
使用到的正则表达式: [^\?&]?参数名=[^&]+ document.location.getURLPara = function (name) { var reg = new R ...