您的位置:首页 > 产品设计 > UI/UE

iOS UIActivityViewController实现原生分享AirDrop

2017-10-20 15:02 543 查看
勇~敢~的小伙伴们,你们好啊~

我今天做项目的时候我们项目中需要加一个下载功能,下载rar?zip?mp3?mp4?还是txt?我没有一个很好的方式把所有的文件格式打开,借用万能的UIActivityViewController使用手机上其他APP打开岂不是个最好的办法?

既然到这里,我就落实到实处,开始动手做。

效果如图:




UIActivityViewController

实现起来很简单,只要几行代码就可以解决问题。

UIActivityViewController *activity = [[UIActivityViewController alloc] initWithActivityItems:@[videoURL] applicationActivities:nil];
UIPopoverPresentationController *popover = activity.popoverPresentationController;
if (popover) {
popover.permittedArrowDirections = UIPopoverArrowDirectionUp;
}
[self presentViewController:activity animated:YES completion:NULL];
其中videoURL是NSURL类,当传输的是文件时用URL分享,文字用NSString,图片用UIImage,放在activityItems中。

applicationActivities数组内的对象必须是UIActivity类型的对象,代表的是iOS系统支持的我们自定义的服务。

UIActivityViewController只支持模态。present




excludedActivityTypes

另外还有一个不得不提到的就是excludedActivityTypes的属性。

excludedActivityTypes这个属性包含了所有不想在UIActivityViewController中展示的Item服务。excludedActivityTyped是一个字符串数组,所包含的内容必须是系统提供的UIActivity的ActivityType字符串,而系统提供的字符串如下:

NSString *const UIActivityTypePostToFacebook;
NSString *const UIActivityTypePostToTwitter;
NSString *const UIActivityTypePostToWeibo;
NSString *const UIActivityTypeMessage;
NSString *const UIActivityTypeMail;
NSString *const UIActivityTypePrint;
NSString *const UIActivityTypeCopyToPasteboard;
NSString *const UIActivityTypeAssignToContact;
NSString *const UIActivityTypeSaveToCameraRoll;
NSString *const UIActivityTypeAddToReadingList;
NSString *const UIActivityTypePostToFlickr;
NSString *const UIActivityTypePostToVimeo;
NSString *const UIActivityTypePostToTencentWeibo;
NSString *const UIActivityTypeAirDrop;


如果我们不想展示AirDrop功能只需要设置

activity.excludedActivityTypes = @[UIActivityTypeAirDrop];


到此UIActivityViewController的简单使用就结束了,欢迎小伙伴儿们指出我的问题~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: