利用UIActivityController调用ios系统自带的分享功能,实现微信发布多图的功能
通过一番查找以后找到一个类UIActivityController,可以调用系统的social.framework中的分享接口。看下面的图就知道了,这个还是挺常见的
微信发布多图
借鉴了CSDN上的一个demo,
里面自定义了一个实现UIActivityItemSource协议的类 ShareItem
//
// SharedItem.h
// xingjiang
//
// Created by 吴德明 on 16/7/14.
// Copyright © 2016年 吴德明. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface SharedItem : NSObject<UIActivityItemSource>
-(instancetype)initWithData:(UIImage*)img andFile:(NSURL*)file;
@property (nonatomic, strong) UIImage *img;
@property (nonatomic, strong) NSURL *path;
@end
实现文件
//
// SharedItem.m
// xingjiang
//
// Created by 吴德明 on 16/7/14.
// Copyright © 2016年 吴德明. All rights reserved.
//
#import "SharedItem.h"
@implementation SharedItem
-(instancetype)initWithData:(UIImage *)img andFile:(NSURL *)file
{
self = [super init];
if (self) {
_img = img;
_path = file;
}
return self;
}
-(instancetype)init
{
//不期望这种初始化方式,所以返回nil了。
return nil;
}
#pragma mark - UIActivityItemSource
-(id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController
{
return _img;
}
-(id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
{
return _path;
}
-(NSString*)activityViewController:(UIActivityViewController *)activityViewController subjectForActivityType:(NSString *)activityType
{
// 这里对我这分享图好像没啥用.... 是的 没啥用....
return @"";
}
实际调用的代码
//
// ViewController.m
// ShareItemWX
//
// Created by 吴德明 on 16/7/14.
// Copyright © 2016年 吴德明. All rights reserved.
//
#import "ViewController.h"
#import "SharedItem.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *Button = [UIButton buttonWithType:UIButtonTypeCustom];
Button.frame = CGRectMake(0, 0, 100, 100);
Button.center = self.view.center;
Button.backgroundColor = [UIColor blueColor];
[Button setTitle:@"分享到微信" forState:UIControlStateNormal];
[Button addTarget:self action:@selector(shareWX) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:Button];
}
/** 分享到微信 以九宫格的方式*/
-(void)shareWX{
/** 图片网址数组*/
NSArray *array_photo = @[@"http://img.meifajia.com/o1aneipt09eCl5bqQp4ifbQdTHlKIJfq.jpg?imageView2/1/w/360/h/480/q/85",@"http://img.meifajia.com/o1aneipt2fbZm38Zct4DH92p-ez7-fXt.jpg?imageView2/1/w/360/h/480/q/85",@"http://img.meifajia.com/o1aneiocd24Y6jK8uQA8-8y-47H6vRe7.jpg?imageView2/1/w/360/h/480/q/85",@"http://img.meifajia.com/o1aneiocdd94h6ld4kQJh8PcpjGSkORS.jpg?imageView2/1/w/360/h/480/q/85",@"http://img.meifajia.com/o1aneiocdd94h6ld4kQJh8PcpjGSkORS.jpg?imageView2/1/w/360/h/480/q/85",@"http://img.meifajia.com/o1aneipt09eCl5bqQp4ifbQdTHlKIJfq.jpg?imageView2/1/w/360/h/480/q/85",@"http://img.meifajia.com/o1aneioccpacV1LVg2AfG9fbYl8zN1So.jpg?imageView2/1/w/360/h/480/q/85",@"http://img.meifajia.com/o1aneipt0haf1zwepSkxx9okI0W34t05.jpg?imageView2/1/w/360/h/480/q/85",@"http://img.meifajia.com/o1aneipt09eCl5bqQp4ifbQdTHlKIJfq.jpg?imageView2/1/w/360/h/480/q/85",@"http://img.meifajia.com/o1aneipt09eCl5bqQp4ifbQdTHlKIJfq.jpg?imageView2/1/w/360/h/480/q/85",@"http://img.meifajia.com/o1aneipt09eCl5bqQp4ifbQdTHlKIJfq.jpg?imageView2/1/w/360/h/480/q/85"];
NSMutableArray *array = [[NSMutableArray alloc]init];
for (int i = 0; i <8 && i<array_photo.count; i++) {
NSString *URL = array_photo[i];
NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:URL]];
UIImage *imagerang = [UIImage imageWithData:data];
NSString *path_sandox = NSHomeDirectory();
NSString *imagePath = [path_sandox stringByAppendingString:[NSString stringWithFormat:@"/Documents/ShareWX%d.jpg",i]];
[UIImagePNGRepresentation(imagerang) writeToFile:imagePath atomically:YES];
NSURL *shareobj = [NSURL fileURLWithPath:imagePath];
/** 这里做个解释 imagerang : UIimage 对象 shareobj:NSURL 对象 这个方法的实际作用就是 在调起微信的分享的时候 传递给他 UIimage对象,在分享的时候 实际传递的是 NSURL对象 达到我们分享九宫格的目的 */
SharedItem *item = [[SharedItem alloc] initWithData:imagerang andFile:shareobj];
[array addObject:item];
}
UIActivityViewController *activityViewController =[[UIActivityViewController alloc] initWithActivityItems:array
applicationActivities:nil];
//尽量不显示其他分享的选项内容
activityViewController.excludedActivityTypes = @[ UIActivityTypePostToFacebook,UIActivityTypePostToTwitter, UIActivityTypePostToWeibo, UIActivityTypeMessage,UIActivityTypeMail,UIActivityTypePrint,UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypeAddToReadingList,UIActivityTypePostToFlickr,UIActivityTypePostToVimeo,UIActivityTypePostToTencentWeibo,UIActivityTypeAirDrop,UIActivityTypeOpenInIBooks];
if (activityViewController) {
[self presentViewController:activityViewController animated:TRUE completion:nil];
}
}
@end
最终效果
中间用户的操作步骤
app界面
第一步
第二步
第三步写评论
ios 版本9.2.1
微信版本6.3.22
利用UIActivityController调用ios系统自带的分享功能,实现微信发布多图的功能的更多相关文章
- iOS系统自带的 UIAlertView 自动旋转的实现
这里主要解析 UIAlertView 的几个关键功能的实现: 随着设备屏幕的旋转而旋转: Alert弹出框,使用UIWindow来实现,就是说,不用依赖于当前显示在最前面的UIView. 实现源码参考 ...
- iOS系统自带分享功能
很多APP中都带有社交分享功能,通过用户的分享,让更多地人去了解和使用这个APP,目前社交分享是移动互联网应用程序推广的最重要手段之一,国内较或的分享平台有微信,IOS6后苹果集成的新浪微博,还有IO ...
- ShareIntentUtil【调用系统自带的分享的工具类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 根据参考资料的文章,整理了调用系统自带分享的工具类(实现了适配7.0FileProvider的功能),需要搭配<Android ...
- 应用程序间跳转 (友盟SSO 授权 与系统自带的分享)
应用程序间跳转的应用场景 使用第三方用户登录,如微信登录,返回用户名和密码 需要用户授权,返回到调用程序,同时返回授权的用户名 应用程序推广,跳转到itunes并显示指定app下载页 第三方支付,跳转 ...
- 社交网络编程API之iOS系统自带分享
社交网络编程API 社交网络编程主要使用iOS提供的Social框架,目前Social框架主要包含两个类: SLComposeViewController 提供撰写社交信息(如微博信息)的视图控制器, ...
- Android分享---调用系统自带的分享功能
以前我们总想到友盟等平台分享功能的集成,集成这玩意还得下载对应的jar包.当然,用这些平台的分享并不是说什么好处都没有,至少人家的统计功能还是很实用的.不过有的时候我们是不需要多余功能的,只需要能分享 ...
- iOS开发,系统自带的分享简单实现
由于simulator设置里面没有新浪微博的选项,所以选择了真机调试,成功了.代码不多,包含头文件 没有配置登录信息的话,是没有作用的 ...
- iOS系统自带正则表达式简单运用
//组装一个字符串,把里面的网址解析出来 NSString *urlString = @"sfdshttp://www.baidu.com"; NSError *error; // ...
- php调用window系统自带的命令,比如计算器
1.在cmd命令行输入calc.exe 2.
随机推荐
- Bzoj2434 [Noi2011]阿狸的打字机
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2536 Solved: 1415 Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到 ...
- [NOIP2014] 普及组
珠心算测验 模拟. 将所有“两个不同数之和”装进桶里,扫描原数组记录满足条件的数的个数. /*by SilverN*/ #include<iostream> #include<alg ...
- bzoj1535[POI2005]sza-template
此题解无病呻吟,啰里啰嗦,现已加入零分作文全家桶 这题......坑死我了...... 不妨记原串长为i的前缀为prefix(i),next[i]表示prefix(i)的最长公共前后缀长度(不等于pr ...
- Ubuntu 使用笔记
持续更新 从前使用sudo apt update更新时, 发现软件源是cn.archive.ubuntu.com. 最近在system setting 中将软件源改成了archive.ubuntu.c ...
- COGS 577 蝗灾
传送门 时间限制:2 s 内存限制:128 MB DESCRIPTION C国国土辽阔,地大物博......但是最近却在闹蝗灾..... 我们可以把C国国土当成一个W×W的矩阵,你会收到一些诸如(X, ...
- [Android]Volley源码分析(二)
上一篇介绍了Volley的使用,主要接触了Request与RequestQueue这两个类,这篇就来了解一下这两个类的具体实现. Request类图:
- CSS--值和单位
等价颜色表 什么叫Web安全色 所谓的“web安全”颜色是指在256色计算机系统上总能避免抖动的颜色. Web安全颜色可以表示为RGB值为20%和51(相应的十六进制值为33)的倍数. 如果使用RGB ...
- runtime - Method详细笔记
Runtime中Method详细介绍 1.找到它,认识它 //*> 在objc/runtime.h中定义了Method类型,Method是一个objc_method结构体指针,结构体中包含SEL ...
- 网络存储(二)之ISCSI原理
组成 一个简单ISCSI系统大致由以下部分构成 ISCSI Initiator 或者 ISCSI HBA ISCSI Target 以太网交换机 一台或者多台服务器 结构图如下: iscsi服务器用来 ...
- 强大的css3
强大的css3 我们知道,这几年来智能手机的高速发展使得人们使用移动端上网的时间和人数已经超过了PC端.例如在2015年,就中国电商而言,各电商平台在移动端持续发力,移动端购物占比不断攀升,双11期间 ...