很多App都有分享的功能,第三方分享需要自己去研究一下shareSDK,研究文档去进行集成,今天我就简单的只介绍一下截图这个功能。
构建button
@property (nonatomic,strong)UIButton *memberBut;
- (UIButton *)memberBut{
if (!_memberBut) {
_memberBut = [UIButton buttonWithType:UIButtonTypeCustom];
_memberBut.backgroundColor = [UIColor whiteColor];
[_memberBut setTitleColor:GetColor(108, 189, 153, 1) forState:UIControlStateNormal];
}
[_memberBut setImage:IMGNAME(@"share") forState:UIControlStateNormal];
[_memberBut addTarget:self action:@selector(takeScreenAndShare:) forControlEvents:UIControlEventTouchUpInside];
return _memberBut;
}
实现方法
- (void)takeScreenAndShare:(UIButton *)sender{//截取当前屏幕
UIImage *screenImage = [self captureScreen];
NSData *data = UIImagePNGRepresentation(screenImage);
UIImage *imgBmp = [UIImage imageWithData:data]; //建立UIImage为bmp格式
NSData *dJpeg = UIImageJPEGRepresentation(imgBmp,1.0);//从bmp格式的Image转为jpeg格式的NSData,其实也可以从任意格式的Image转,不仅限于bmp
self.imgJPeg = [UIImage imageWithData:dJpeg];//建立UIIMage为jpeg格式
if ([WeiboSDK isWeiboAppInstalled]) {
[self.view addSubview:self.aler];
} else {
NSArray *imageArray = @[self.imgJPeg];//@[[UIImage imageNamed:@"cryface"]];
NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
if (imageArray) {
[shareParams SSDKSetupShareParamsByText:@""
images:imageArray
url:nil
title:@""
type:SSDKContentTypeAuto];
}
> 要显示菜单的视图,iPad版中此参数作为弹出菜单的参照视图,只有传这个才可以弹出我们的分享菜单,可以传分享的按钮对象或者自己创建小的view对象,iPhone可以传nil不会影响
[ShareSDK showShareActionSheet:nil
items:nil
shareParams:shareParams
onShareStateChanged:^(SSDKResponseState state, SSDKPlatformType platformType, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error, BOOL end) {
switch (state) {
case SSDKResponseStateSuccess:{
NSLog(@"分享成功");
}
case SSDKResponseStateFail:{
NSLog(@"失败");
}
default:
break;
}
}
];
}
> NSData *dBmp = [self buildBmpData];
> 建立一个NSdata,内容为bmp格式:前面54字节为格式,后面的为rgb
> UIImageWriteToSavedPhotosAlbum(self.imgJPeg,nil,nil,nil);//保存到相册
}
- (UIImage *)captureScreen {
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, 0.0);//开启一个图片的层,大小为当前屏幕
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];//直接把当前屏幕的view填充进当前图层
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();//从图层上,获取一张image,相当于照一张相
UIGraphicsEndImageContext();
return img;
}
/*
UIGraphicsBeginImageContext(viewToCapture.bounds.size);//截得图比较模糊
UIGraphicsBeginImageContextWithOptions(viewToCapture.bounds.size, NO, 0.0);//原图
*/
三方分享
- (void)action_ShareWithNumber:(NSInteger)number{
NSLog(@"%ld",number);
NSArray *imageArray = @[self.imgJPeg];//@[[UIImage imageNamed:@"cryface"]];
NSMutableDictionary *shareParams = [NSMutableDictionary dictionary];
if (imageArray) {
[shareParams SSDKSetupShareParamsByText:@""
images:imageArray
url:nil
title:@""
type:SSDKContentTypeAuto];
}
[shareParams SSDKEnableUseClientShare];
> 微博
if (number == 0) {
[ShareSDK share:SSDKPlatformTypeSinaWeibo parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
}];
}
> QQ空间
if (number == 1) {
[ShareSDK share:SSDKPlatformSubTypeQZone parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
}];
}
> QQ好友
if (number == 2) {
[ShareSDK share:SSDKPlatformSubTypeQQFriend parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
}];
}
> 微信好友
if (number == 3) {
[ShareSDK share:SSDKPlatformSubTypeWechatSession parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
}];
}
> 微信朋友圈
if (number == 4) {
[ShareSDK share:SSDKPlatformSubTypeWechatTimeline parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
}];
}
> 微信收藏
if (number == 5) {
[ShareSDK share:SSDKPlatformSubTypeWechatFav parameters:shareParams onStateChanged:^(SSDKResponseState state, NSDictionary *userData, SSDKContentEntity *contentEntity, NSError *error) {
}];
}
}
以上就是截图进行三方分享的简单demo,如果要使用代码,记得去集成哦~