關(guān)于UIActivityViewController介紹,這個很詳細
代碼如下:
NSString*textToShare =@"要分享的文本內(nèi)容";
? ? 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];
此外我稍加研究了一下,分享多圖時候只能單純的多圖(不能添加網(wǎng)址,封面)如果添加了就默認去一張圖片作為封面圖
多圖分享,需要把圖片轉(zhuǎn)存本地緩存。具體操作可參考這里。根據(jù)這個代碼如下:
.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];
? ? ? ? //把緩存圖片的地址轉(zhuǎn)成NSUrl格式
?? ? ? ? NSURL*shareobj = [NSURLfileURLWithPath:imagePath];
? ? ? ? //這個部分是自定義ActivitySource
? ? ? ? shareItem*item = [[shareItemalloc]initWithData: imagerangandFile:shareobj];
? ? ? ? //分享的數(shù)組
?? ? ? ? [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];
? ? ? ? ? ? //把圖片轉(zhuǎn)成NSData類型
? ? ? ? ? ? NSData* data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:URL]];
? ? ? ? ? ? //寫入圖片中
?? ? ? ? ? ? UIImage*imagerang = [UIImageimageWithData:data];
? ? ? ? ? ? [tempimgaddObject:imagerang];
? ? ? ? }else{
? ? ? ? ? ? [tempimgaddObject:obj];
? ? ? ? }
? ? }
? ? returntempimg;
}
@end
分享表格,pdf等文件用UIDocumentInteractionController 去分享。
預覽文件?QLPreviewController(多文件)和UIDocumentInteractionController(單文件)