标签:style blog http color 使用 os io strong
昨天在做微信分享的时候, 用到了这个东西。趁热写点东西记录下。
UIActivityViewController类是一个标准的view controller,通个使用这个controller,你的应用程序就可以提供各种服务。
系统提供了一些通用的标准服务,例如拷贝内容至粘贴板、发布一个公告至社交网、通过email或者SMS发送内容。
应用程序同样可以自定义服务。(我的微信分享就属于自定义服务, 之后将会写一篇教程介绍)
你的应用程序负责配置、展现和解雇这个view controller。
viewcontroller的配置涉及到viewcontroller需要用到的具体的数据对象。(也可以指定自定义服务列表,让应用程序支持这些服务)。
在展现view controller时,必须根据当前的设备类型,使用适当的方法。在iPad上,必须通过popover来展现view controller。在iPhone和iPodtouch上,必须以模态的方式展现。
继承自 | UIViewController : UIResponder : NSObject |
符合 | NSCoding (UIViewController) UIAppearanceContainer (UIViewController) NSObject (NSObject) |
框架 | /System/Library/Frameworks/UIKit.framework |
可用性 | iOS6以及之后 |
声明在 | UIActivityViewController.h |
- (id)initWithActivityItems:(NSArray *)activityItems applicationActivities:(NSArray *)applicationActivities;
根据指定的数据初始化并返回一个新的activity view controller。
NSString *textToShare = @"要分享的文本内容"; UIImage *imageToShare = [UIImage imageNamed:@"iosshare.jpg"]; NSURL *urlToShare = [NSURL URLWithString:@"http://blog.csdn.net/hitwhylz"]; NSArray *activityItems = @[textToShare, imageToShare, urlToShare]; UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
@property(nonatomic,copy) UIActivityViewControllerCompletionHandler completionHandler; // set to nil after call
typedef void (^UIActivityViewControllerCompletionHandler)(NSString *activityType, BOOL completed);当activityview controller被解雇时,completion handler会被执行。这可以用来处理当使用完activityview controller之后, 执行的一些相关操作。
不管是点击了“cancel”, 还是选中了某项服务,当它结束后,都会调用这个块,并且能捕抓到你选中的服务,来执行相关操作。
//给activityVC的属性completionHandler写一个block。 //用以UIActivityViewController执行结束后,被调用,做一些后续处理。 UIActivityViewControllerCompletionHandler myBlock = ^(NSString *activityType,BOOL completed) { NSLog(@"activityType :%@", activityType); if (completed) { NSLog(@"completed"); } else { NSLog(@"cancel"); } //放回上一级界面 [self.navigationController dismissModalViewControllerAnimated:YES]; }; // 初始化completionHandler,当post结束之后(无论是done还是cancell)该blog都会被调用 activityVC.completionHandler = myBlock;
@property(nonatomic,copy)NSArray *excludedActivityTypes默认情况下,UIActivityViewController 将显示所有可用于所提供内容的服务,但我们也可以排除特定的 Activity 类型。
UIKIT_EXTERN NSString *const UIActivityTypePostToFacebook NS_AVAILABLE_IOS(6_0); UIKIT_EXTERN NSString *const UIActivityTypePostToTwitter NS_AVAILABLE_IOS(6_0); UIKIT_EXTERN NSString *const UIActivityTypePostToWeibo NS_AVAILABLE_IOS(6_0); // SinaWeibo UIKIT_EXTERN NSString *const UIActivityTypeMessage NS_AVAILABLE_IOS(6_0); UIKIT_EXTERN NSString *const UIActivityTypeMail NS_AVAILABLE_IOS(6_0); UIKIT_EXTERN NSString *const UIActivityTypePrint NS_AVAILABLE_IOS(6_0); UIKIT_EXTERN NSString *const UIActivityTypeCopyToPasteboard NS_AVAILABLE_IOS(6_0); UIKIT_EXTERN NSString *const UIActivityTypeAssignToContact NS_AVAILABLE_IOS(6_0); UIKIT_EXTERN NSString *const UIActivityTypeSaveToCameraRoll NS_AVAILABLE_IOS(6_0); UIKIT_EXTERN NSString *const UIActivityTypeAddToReadingList NS_AVAILABLE_IOS(7_0); UIKIT_EXTERN NSString *const UIActivityTypePostToFlickr NS_AVAILABLE_IOS(7_0); UIKIT_EXTERN NSString *const UIActivityTypePostToVimeo NS_AVAILABLE_IOS(7_0); UIKIT_EXTERN NSString *const UIActivityTypePostToTencentWeibo NS_AVAILABLE_IOS(7_0); UIKIT_EXTERN NSString *const UIActivityTypeAirDrop NS_AVAILABLE_IOS(7_0);
//排除类型, 不显示 //// default is nil. activity types listed will not be displayed activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint];
在展现view controller时,必须根据当前的设备类型,使用适当的方法。在iPad上,必须通过popover来展现view controller。在iPhone和iPodtouch上,必须以模态的方式展现。
//以模态的方式展现activityVC。 [self presentViewController:activityVC animated:YES completion:nil];
展示之后, 你看到的效果图大概是这样:
好了, UIActivityViewController基本功能就介绍到这里, 接下去如果有时间再谢谢微信分享和自定义 UIActivity。
学习的路上, 与君共勉
iOS开发 - UIActivityViewController详解,布布扣,bubuko.com
iOS开发 - UIActivityViewController详解
标签:style blog http color 使用 os io strong
原文地址:http://blog.csdn.net/hitwhylz/article/details/38750373