iOS 原生UIActivityViewController(分享功能)

關(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(單文件)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容