iOS8中添加的extensions总结(二)——分享扩展
分享扩展
注:此教程来源于http://www.raywenderlich.com的《iOS8 by Tutorials》
1.准备
这次例子来源于国外的图片分享网站Imgur.com










2.设置分享扩展前

//AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
#warning 在这里设置成你的CLIENT ID
[RWTImgurService setClientId:@"CLIENT ID"]; [[UITabBar appearance] setTintColor:[UIColor imgvueGreen]];
[[UINavigationBar appearance] setTintColor:[UIColor imgvueGreen]];
[[UIProgressView appearance] setTintColor:[UIColor imgvueGreen]]; return YES;
} //RWTSavedImageService.m
- (NSURL *)URLForDirectoryWithName:(NSString *)name {
#warning 在这里设置你的APP GROUP ID
NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.qq100858433.JMImgvue"];
containerURL = [containerURL URLByAppendingPathComponent:name]; if (![[NSFileManager defaultManager] fileExistsAtPath:containerURL.path]) {
[[NSFileManager defaultManager] createDirectoryAtURL:containerURL withIntermediateDirectories:NO attributes:nil error:nil];
} return containerURL;
}
3.正文








直接使用即可,在对SharViewController编程前,由于我们要使用原有的头文件和第三方库,所以将cocoapods的Podfile文件做如下更改,增加你建的扩展项目
# Uncomment this line to define a global platform for your project
# platform :ios, '6.0'
inhibit_all_warnings! target 'JMImgure' do pod 'SDWebImage'
pod 'AFNetworking' end target 'JMImgure Share' do pod 'SDWebImage'
pod 'AFNetworking' end
之后在命令行重新运行pod install即可,下面是更改后的ShareViewController.m,有注释说明
//
// ShareViewController.m
// JMImgure Share
//
// Created by JackMa on 15/11/29.
// Copyright © 2015年 JackMa. All rights reserved.
// #import <MobileCoreServices/MobileCoreServices.h>
#import "ShareViewController.h" @interface ShareViewController () @property (nonatomic, strong) UIImage *image; @end @implementation ShareViewController - (void)viewDidLoad {
//获取inputItems,在这里itemProvider是你要分享的图片
NSExtensionItem *firstItem = self.extensionContext.inputItems.firstObject;
NSItemProvider *itemProvider;
if (firstItem) {
itemProvider = firstItem.attachments.firstObject;
} //这里的kUTTypeImage代指@"public.image",也就是从相册获取的图片类型
//这里的kUTTypeURL代指网站链接,如在Safari中打开,则应该拷贝保存当前网页的链接
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeURL]) {
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeURL options:nil completionHandler:^(id<NSSecureCoding> _Nullable item, NSError * _Null_unspecified error) {
if (!error) {
//对itemProvider夹带着的URL进行解析
NSURL *url = (NSURL *)item;
[UIPasteboard generalPasteboard].URL = url;
}
}];
}
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeImage]) {
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeImage options:nil completionHandler:^(id<NSSecureCoding> _Nullable item, NSError * _Null_unspecified error) {
if (!error) {
//对itemProvider夹带着的图片进行解析
NSURL *url = (NSURL *)item;
NSData *imageData = [NSData dataWithContentsOfURL:url];
self.image = [UIImage imageWithData:imageData];
}
}];
}
} //设置Post是否有效,当你每次输入内容的时候,都会调用此方法
- (BOOL)isContentValid {
if (self.image) {
return YES;
} else {
return NO;
}
} //设置点击Post后的动作
- (void)didSelectPost {
[self shareImage];
} //在这里设置弹出sheet的底部,要求用SLComposeSheetConfigurationItem的对象
- (NSArray *)configurationItems {
SLComposeSheetConfigurationItem *configItem = [[SLComposeSheetConfigurationItem alloc] init];
configItem.title = @"链接将被拷贝到剪贴板";
return @[configItem];
} - (void)shareImage {
//在这里写图片上传的代码
}
在运行时选择Photos后Run




iOS8中添加的extensions总结(二)——分享扩展的更多相关文章
- iOS8中添加的extensions总结(一)——今日扩展
通知栏中的今日扩展 分享扩展 Action扩展 图片编辑扩展 文件管理扩展 第三方键盘扩展 注:此教程来源于http://www.raywenderlich.com的<iOS8 by Tutor ...
- iOS8中添加的extensions总结(三)——图片编辑扩展
图片编辑扩展 注:此教程来源于http://www.raywenderlich.com的<iOS8 by Tutorials> 1.准备 与(二)类似的使用Imgur作为图片来源 2. ...
- iOS8中添加的extensions总结(四)——Action扩展
Action扩展 注:此教程来源于http://www.raywenderlich.com的<iOS8 by Tutorials> 1.准备 本次教程利用网站bitly.com进行 bit ...
- FastReport 中添加二维码功能.(Delphi)
http://www.cnblogs.com/fancycloud/archive/2011/07/24/2115240.html FastReport 中添加二维码功能.(Delphi) 在实际 ...
- iOS8开发~UI布局(二)storyboard中autolayout和size class的使用具体解释
一.概要:前一篇初步的描写叙述了size class的概念,那么实际中怎样使用呢,以下两个问题是我们一定会遇到的: 1.Xcode6中添加了size class,在storyboard中怎样使用? 2 ...
- iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)
本文转载至 http://blog.csdn.net/liuwuguigui/article/details/39494597 IOS8UIAlertViewUIActionSheet ...
- C#/VB.NET 在Word中添加条码、二维码
本文介绍如何通过C# 和VB.NET代码实现在Word文档中添加条码和二维码.代码中将分为在Word正文段落中.页眉页脚中等情况来添加. 使用工具:Free Spire.Office for .NET ...
- Web开发从零单排之二:在自制电子请帖中添加留言板功能,SAE+PHP+MySql
在上一篇博客中介绍怎样在SAE平台搭建一个html5的电子请帖网站,收到很多反馈,也有很多人送上婚礼的祝福,十分感谢! web开发从零学起,记录自己学习过程,各种前端大神们可以绕道不要围观啦 大婚将至 ...
- 在网页中添加分享到微信、QQ、微博
参考地址:http://www.bshare.cn/help/installAction 在上面的地址中: 1.可选择分享到的位置,如QQ.微信.微博等 2.按钮的样式.悬浮或者以横幅的方式自己找位置 ...
随机推荐
- Java高精度学习第一弹
为了快速解决高精度问题,总算是要来接触java了,算上这学期要开java的课了,好好学习吧! 拿来练手的是hdu的1002,高精度加法. import java.util.*; import java ...
- codevs 1243 网络提速
题目描述 Description 某学校的校园网由n(1<=n<=50)台计算机组成,计算机之间由网线相连,如图5.其中顶点代表计算机,边代表网线.正如你所见,不同网线的传输能力不尽相同, ...
- Using Swift with Cocoa and Objective-C(Swift 2.0版):开始--基础设置-备
这是一个正在研发的API或技术的概要文件,苹果公司提供这些信息主要是为了帮助你通过苹果产品使用这些技术或者编程接口而做好计划,该信息有可能会在未来发生改变,本文当中提到的软件应该以最终发布的操作系统测 ...
- tomcat jar包加载顺序
加载顺序: 1. $java_home/lib 目录下的java核心api 2. $java_home/lib/ext 目录下的java扩展jar包 3. java -classpath/-Djava ...
- HTTP 代理原理及实现
本文转载自 https://imququ.com/post/web-proxy.html HTTP 代理原理及实现(一) 文章目录 普通代理 隧道代理 Web 代理是一种存在于网络中间的实体,提供各式 ...
- 关于extern "C" 的用法
而在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误 ...
- java数据安全(一)
在java开发中,常常需要考虑数据安全问题,然不仅仅需要考虑数据存储的安全,还需要考虑数据的传输安全.自从有了数据安全问题后,密码学也就出来了.了解数据安全,首先需要了解密码学 1.什么是密码学 密码 ...
- cf701B Cells Not Under Attack
Vasya has the square chessboard of size n × n and m rooks. Initially the chessboard is empty. Vasya ...
- java排序算法-归并排序
public class MergeSort { private static void mergeSortTest() { int[] in = { 2, 5, 3, 8, 6, 7, 1, 4, ...
- oracle的shutdown命令有几种参数
SHUTDOWN NORMAL:不允许新的连接.等待会话结束.等待事务结束.做一个检查点并关闭数据文件.启动时不需要实例恢复.SHUTDOWN TRANSACTIONAL:不允许新的连接.不等待会话结 ...