ios自带的社会化分享功能其实不咋滴,要分享到微博或者微信之类的不如用他们自己官网sdk,不过因为今天无聊研究了下ios自带的分享功能,反正既然学了,那就写出来吧。
1.社会化分享之列表项:ios自带的社会化分享功能,如果你希望点出来的先是一个列表,然后再列表中选择其中的某一项,就要用UIActivityViewController类。
首先要知道ios自带的社会化分享有哪些功能,一共有以下几个类型
UIActivityTypePostToFacebook -- facebook活动列表项
UIActivityTypePostToTwitter -- twitter活动列表项
UIActivityTypePostToWeibo -- 新浪微博活动列表项
UIActivityTypeMessage -- iMessage应用活动列表项
UIActivityTypeMail -- 发送mail活动列表项
UIActivityTypePrint -- 共享打印活动列表项
UIActivityTypeCopyToPasteboard -- 将内容复制到剪切板
UIActivityTypeAssignToContact -- 访问联系人活动列表项
UIActivityTypeSaveToCameraRoll -- 访问设备上的相册活动列表项
废话不多说,使用列表项无需加入包什么的,直接编写即可,接下来直接把代码贴出来
- (IBAction)shareList:(id)sender
{
//定义文字、图片,以及可点击时点击触发的url。然后将这3者加入到数组中去
NSString *textToShare = @"大家好我叫王伟楷";
UIImage *imageToShare = [UIImage imageNamed:@"wwk.png"];
NSURL *urlToShare = [NSURL URLWithString:@"http://www.wangweikai.com"];
NSArray *activityItems = @[textToShare,imageToShare,urlToShare];
//创建UIActivityViewController对象,并将数值放进去
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
//定义不出现在活动的项目
activityVC.excludedActivityTypes = @[UIActivityTypePrint,UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll];
//这里是为了适配ios以及以上版本新增的,只有iOS以及以上版本才有那个方法,有那个方法的话则执行
if ( [activityVC respondsToSelector:@selector(popoverPresentationController)] ) {
activityVC.popoverPresentationController.sourceView = self.view;
}
//执行
[self presentViewController:activityVC animated:true completion:nil];
}
2.第2种的话,是直接弹出要分享的窗口,确认信息无误后点确定即可分享 ,使用到的类是SLComposeViewController
使用该类要注意的前期准备是
(1)先添加Social.framework框架,具体添加框架的方法这里就不详细说了,相信大家都懂的
(2)在文件头部引入#import <Social/Social.h>
好,之后即可进行编程了,直接贴上代码
- (IBAction)share:(id)sender
{
//创建SLComposeViewController对象,并定义为SLServiceTypeSinaWeibo,即是要实现新浪微博的分享
SLComposeViewController *composeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
//这里可以添加“if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo])”判断你的苹果设备是否有绑定微博账号
//以下方法用来查看用户点击的是哪个按钮,以及点击按钮后该执行的方法
SLComposeViewControllerCompletionHandler __block completionHandle = ^(SLComposeViewControllerResult result)
{
[composeViewController dismissViewControllerAnimated:YES completion:nil];
switch (result)
{
//如果点击的是取消的按钮
case SLComposeViewControllerResultCancelled:
default:
NSLog(@"cancelled...");
break;
//如果点击的是确定的按钮
case SLComposeViewControllerResultDone:
NSLog(@"posted...");
break;
}
};
//定义图片和文字
[composeViewController addImage:[UIImage imageNamed:@"wwk.png"]];
[composeViewController setInitialText:@"大家好我叫王伟楷"];
//将上面的block加进来
[composeViewController setCompletionHandler:completionHandle];
//模态视图呈现,如果是ipad则要popover视图呈现
[self presentViewController:composeViewController animated:YES completion:nil];
}