CC论坛

 找回密码
 立即注册
查看: 757|回复: 0

[iOS] 调用iOS系统分享

[复制链接]

56

主题

57

帖子

339

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
339
发表于 2020-2-18 22:19:31 | 显示全部楼层 |阅读模式
Objective-C

  1. /**
  2. 调用iOS系统的分享
  3. @param path 文件路径
  4. @param aSourceView 源视图
  5. */
  6. [list][*](void)shareWithPath: (NSURL *)path sourceView:(UIView *)aSourceView {[/list]
  7.     // 把不需要的UIActivityType都写到excludedActivities中
  8.     NSArray *excludedActivities = @[UIActivityTypePostToTwitter,  // 发送到Twitter
  9.                                     UIActivityTypePostToFacebook, // 发送到Facebook
  10.                                     UIActivityTypePostToWeibo,    // 发送到新浪微博
  11.                                     UIActivityTypePostToFlickr,   // 发送到Flickr
  12.                                     UIActivityTypePostToVimeo,    // 发送到Vimeo
  13.                                     UIActivityTypePostToTencentWeibo,// 发送到腾讯微博
  14.                                     
  15.                                     UIActivityTypeMail,           // 邮件
  16.                                     UIActivityTypeAirDrop,        // AirDrop传输
  17.                                     UIActivityTypeMessage,        // 短信
  18.                                     UIActivityTypePrint,          // 打印
  19.                                     UIActivityTypeCopyToPasteboard,// 拷贝到粘贴板
  20.                                     UIActivityTypeAssignToContact, // 指定到联系人
  21.                                     UIActivityTypeSaveToCameraRoll,// 保存到相机胶卷
  22.                                     UIActivityTypeAddToReadingList,// 添加到阅读列表
  23.                                     UIActivityTypeOpenInIBooks     // 使用Books打开
  24.                                     ];
  25.     // 初始化分享控制器
  26.     UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[path] applicationActivities:nil];
  27.    
  28.     // 设置排除类型
  29.     controller.excludedActivityTypes = excludedActivities;
  30.    
  31.     // 处理分享回调, 如果不需要可以设置可以为nil
  32.     controller.completionWithItemsHandler = ^(UIActivityType  _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
  33.         
  34.         NSLog(@"activityType=%@", activityType);
  35.         NSLog(@"completed=%d", completed);
  36.         NSLog(@"returnedItems=%@", returnedItems);
  37.         NSLog(@"activityError=%@", activityError);
  38.     };
  39.    
  40.     // 适配iPad,否则会carsh
  41.     if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) {
  42.         
  43.         controller.popoverPresentationController.sourceView = aSourceView;
  44.     }
  45.    
  46.     // 显示分享控制器
  47.     [self presentViewController:controller animated:YES completion:nil];
  48. }
复制代码

使用

  1. [list][*](IBAction)share:(UIButton *)sender {[/list]
  2.    
  3.     NSURL *path = [[NSBundle mainBundle] URLForResource:@"bkg" withExtension:@"png"];
  4.     [self shareWithPath:path sourceView:sender];
  5. }
复制代码

<!--text-ad-->
Swift

  1. /// 调用iOS系统的分享
  2. ///
  3. /// - Parameters:
  4. ///   - withPath: 文件路径
  5. ///   - sourceView: 源视图
  6. func share(withPath: URL, sourceView: UIView) {
  7.    
  8.     /// 把不需要的UIActivityType都写到excludedActivities中
  9.     let excludedActivities: [UIActivityType] = [
  10.         .postToTwitter,      // 发送到Twitter
  11.         .postToFacebook,     // 发送到Facebook
  12.         //.postToWeibo,        // 发送到新浪微博
  13.         .postToFlickr,       // 发送到Flickr
  14.         .postToVimeo,        // 发送到Vimeo
  15.         //.postToTencentWeibo, // 发送到腾讯微博
  16.         
  17.         //.mail,               // 邮件
  18.         .airDrop,            // AirDrop传输
  19.         //.message,            // 短信
  20.         .print,              // 打印
  21.         .copyToPasteboard,   // 拷贝到粘贴板
  22.         .assignToContact,    // 指定到联系人
  23.         //.saveToCameraRoll,   // 保存到相机胶卷
  24.         .addToReadingList,   // 添加到阅读列表
  25.         .openInIBooks        // 使用Books打开
  26.     ]
  27.    
  28.     /// 初始化分享控制器
  29.     let controller = UIActivityViewController(activityItems: [withPath], applicationActivities: nil)
  30.    
  31.     /// 设置排除类型
  32.     controller.excludedActivityTypes = excludedActivities
  33.    
  34.     /// 处理分享回调, 如果不需要可以设置可以为nil
  35.     controller.completionWithItemsHandler = {
  36.         (activityType: UIActivityType?, completed: Bool, returnedItems: [Any]?, activityError: Error?) in
  37.         
  38.         }
  39.    
  40.     /// 适配iPad,否则会carsh
  41.     if UIDevice.current.userInterfaceIdiom == .pad {
  42.         
  43.         controller.popoverPresentationController?.sourceView = sourceView
  44.     }

  45.     /// 显示分享控制器
  46.     present(controller, animated: true, completion: nil)
  47. }
复制代码

使用

  1. @IBAction func share(_ sender: UIButton) {
  2.    
  3.     let path = Bundle.main.url(forResource: "myImage", withExtension: "png")!
  4.     share(withPath: path, sourceView: sender)
  5. }
复制代码

效果图

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|粤ICP备19105948号|CC论坛

GMT+8, 2022-12-4 20:35

快速回复 返回顶部 返回列表