ios中系统的UIActivityViewController类给我们提供了很好的实现分享的功能。
UIActivityViewController 的初始换方法
- (instancetype)initWithActivityItems:(NSArray *)activityItems applicationActivities:(nullable NSArray<__kindof UIActivity *> *)applicationActivities NS_DESIGNATED_INITIALIZER;
其中activityItems 是需要分享的内容的数组,可以是图片,可以是文字,也可以是Url。
applicationActivities 参数是需要显示的分享的列表数组 ,可以设置为nil
其中系统提供的可以分享的对象有如下这些:
UIActivityTypePostToTwitter
UIActivityTypePostToWeibo
UIActivityTypeMessage
UIActivityTypeMail
UIActivityTypePrint
UIActivityTypeCopyToPasteboard
UIActivityTypeAssignToContact
UIActivityTypeSaveToCameraRoll
UIActivityTypeAddToReadingList
UIActivityTypePostToFlickr
UIActivityTypePostToVimeo
UIActivityTypePostToTencentWeibo
UIActivityTypeAirDrop
UIActivityTypeOpenInIBooks
UIActivityTypeMarkupAsPDF
UIActivityViewController 的属性 excludedActivityTypes 是屏蔽要显示的列表,即分享是不想让他显示出来的列表。
UIActivityViewController 的属性 UIActivityViewControllerCompletionWithItemsHandler 是分享完成的回调。
eg:
UIImage *image = [UIImage imageNamed:@"Message_Push"];
NSString *titel = @"你好";
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[image,titel,url] applicationActivities:nil];
controller.completionWithItemsHandler = ^(UIActivityType _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
};
NSArray *regectArr = @[UIActivityTypePostToWeibo,UIActivityTypePostToFacebook];
controller.excludedActivityTypes = regectArr;
[self presentViewController:controller animated:YES completion:nil];
测试时发现,当分享到qq个人时,可以分享图片和文字,但是当图片和url一起时,图片不显示,但是分享到微信时,则可以全部显示。 分享到部分应用时,需要在infor文件中配置隐私设置,否则会崩溃。
网友评论