iOS 原生UIActivityViewController(分
关于UIActivityViewController介绍,这个很详细
代码如下:
NSString*textToShare =@"要分享的文本内容";
UIImage*imageToShare = [UIImageimageNamed:@"蒙版组 22"];// 本地图片可直接用
UIImage*imageToShare1 = [UIImageimageNamed:@"home_bg"];// 本地图片可直接用
NSURL*urlToShare = [NSURLURLWithString:@"http://www.baidu.com"];
NSArray*activityItems =@[imageToShare,imageToShare1];
// NSArray *activityItems =@[ imageToShare,imageToShare1,urlToShare,textToShare];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
[self presentViewController: activityVC animated:YES completion:nil];
此外我稍加研究了一下,分享多图时候只能单纯的多图(不能添加网址,封面)如果添加了就默认去一张图片作为封面图
多图分享,需要把图片转存本地缓存。具体操作可参考这里。根据这个代码如下:
.h
#import
NS_ASSUME_NONNULL_BEGIN
@interface shareItem : NSObject
-(instancetype)initWithData:(UIImage*)imgandFile:(NSURL*)file;
@property (nonatomic, strong) UIImage *img;
@property (nonatomic, strong) NSURL *path;
+(void)saveAction:(NSArray *)imgs andUIViewController:(UIViewController *)crt;
@end
NS_ASSUME_NONNULL_END
.m
-(instancetype)initWithData:(UIImage*)imgandFile:(NSURL*)file
{
self= [superinit];
if(self) {
_img= img;
_path= file;
}
return self;
}
#pragma mark - UIActivityItemSource
-(id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController
{
return_img;
}
-(id)activityViewController:(UIActivityViewController*)activityViewControlleritemForActivityType:(NSString*)activityType
{
return_path;
}
-(NSString*)activityViewController:(UIActivityViewController*)activityViewControllersubjectForActivityType:(NSString*)activityType{
return@"";
}
//保存点击方法
+(void)saveAction:(NSArray *)imgarry andUIViewController:(UIViewController *)crt{
NSMutableArray *items = [NSMutableArray array];
NSString *docPath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];//获取程序的目录路径
NSMutableArray*imgs = [selfchangeImage:imgarry];
for(inti =0; i< imgs.count; i++) {
UIImage*imagerang = [imgsobjectAtIndex:i];
//图片缓存的地址,自己进行替换
NSString*imagePath = [docPathstringByAppendingString:[NSStringstringWithFormat:@"/ShareWX%d.jpg",i]];
//把图片写进缓存,一定要先写入本地,不然会分享出错
[UIImageJPEGRepresentation(imagerang, .5) writeToFile:imagePath atomically:YES];
//把缓存图片的地址转成NSUrl格式
NSURL*shareobj = [NSURLfileURLWithPath:imagePath];
//这个部分是自定义ActivitySource
shareItem*item = [[shareItemalloc]initWithData: imagerangandFile:shareobj];
//分享的数组
[itemsaddObject:item];
}
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:items applicationActivities:nil];
#pragma mark- 分享功能
//去除特定的分享功能
// activityVC.excludedActivityTypes = @[UIActivityTypePostToFacebook,UIActivityTypePostToTwitter, UIActivityTypePostToWeibo,UIActivityTypeMessage,UIActivityTypeMail,UIActivityTypePrint,UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll,UIActivityTypeAddToReadingList,UIActivityTypePostToFlickr,UIActivityTypePostToVimeo,UIActivityTypePostToTencentWeibo,UIActivityTypeAirDrop,UIActivityTypeOpenInIBooks];
//
[crtpresentViewController: activityVC animated:YES completion:nil];
}
+(NSMutableArray *)changeImage:(NSArray *)arry{
NSMutableArray *tempimg = [[NSMutableArray alloc]init];
for(idobjinarry) {
if([objisKindOfClass:[NSStringclass]]) {
NSString*imgstr = obj;
NSString *URL = [imgstr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//把图片转成NSData类型
NSData* data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:URL]];
//写入图片中
UIImage*imagerang = [UIImageimageWithData:data];
[tempimgaddObject:imagerang];
}else{
[tempimgaddObject:obj];
}
}
returntempimg;
}
@end
分享表格,pdf等文件用UIDocumentInteractionController 去分享。
预览文件 QLPreviewController(多文件)和UIDocumentInteractionController(单文件)