iOS新手学习

iOS 原生UIActivityViewController(分

2021-01-27  本文已影响0人  逆夏的夏天0

关于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(单文件)

上一篇下一篇

猜你喜欢

热点阅读