对于iOS6以上的系统来说,系统自带的Social框架可以满足很大一部分需求(更重要的是美观,易用,速度快)
首先加入框架的头文件
#import <Social/Social.h>
之后使用UIActivityViewController显示分享选项,代码如下:
UIActivityViewController *avc = [[UIActivityViewController alloc]initWithActivityItems:@[@"abc",[NSURL URLWithString:@"http://www.baidu.com"]] applicationActivities:nil];
avc.excludedActivityTypes = @[UIActivityTypeAirDrop];
[self presentViewController:avc animated:YES completion:nil];
其中activityitems可以包括文字,图片和链接。系统默认的会将可用的分享模块加载到UIActivityViewController中,当然也可以使用excludeActivityTypes删除掉不需要的模块。
UIActivityViewControllerCompletionHandler myblock = ^(NSString *type,BOOL completed){
NSLog(@"%d %@",completed,type);
};
avc.completionHandler = myblock;
另外可以加上分享结束后调用的方法,这样可以判断用户分享到了哪里,是否分享成功。
如果想要自定义分享模块的界面不是用UIActivityViewController可以使用SLComposeViewController进行单独的分享模块展示,具体如下:
SLComposeViewController *svc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
SLComposeViewControllerCompletionHandler myblock = ^(SLComposeViewControllerResult result){
if(result == SLComposeViewControllerResultCancelled){
NSLog(@"cancel");
}else{
NSLog(@"done");
}
[svc dismissViewControllerAnimated:YES completion:nil];
};
svc.completionHandler = myblock;
[svc setInitialText:@"abc"];
[svc addURL:[NSURL URLWithString:@"http://www.baidu.com"]];
[self presentViewController:svc animated:YES completion:nil];
具体的应该都可以自己领会,另外一些属性可以查看头文件得到。