美文网首页iOS新手学习
iOS 原生UIActivityViewController(分

iOS 原生UIActivityViewController(分

作者: 逆夏的夏天0 | 来源:发表于2021-01-27 12:38 被阅读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(单文件)

    相关文章

      网友评论

        本文标题:iOS 原生UIActivityViewController(分

        本文链接:https://www.haomeiwen.com/subject/azzozktx.html