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

iOS --- 使用UIActivityViewController实现分享功能

2015-11-09 20:37 465 查看
UIActivityViewController是iOS自带的分享功能的控制器,包含AirDrop,Copy,Message,Email等功能。开发者可以通过该视图控制器自定义分享功能。当然,部分分享功能直接采用友盟或shareSDK也可以。

UIActivity

一个UIActivity代表一个分享的功能。创建自定义Activity如下:

@interface CustomActivity : UIActivity

@property (nonatomic) UIImage *shareImage;
@property (nonatomic, copy) NSString *URL;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSArray *shareContentArray;
-(instancetype)initWithImage:(UIImage *)shareImage atURL:(NSString *)URL atTitle:(NSString *)title atShareContentArray:(NSArray *)shareContentArray;

@end

@implementation CustomActivity

- (instancetype)initWithImage:(UIImage *)shareImage
atURL:(NSString *)URL
atTitle:(NSString *)title
atShareContentArray:(NSArray *)shareContentArray {
if (self = [super init]) {
_shareImage = shareImage;
_URL = URL;
_title = title;
_shareContentArray = shareContentArray;
}
return self;
}

+ (UIActivityCategory)activityCategory {
return UIActivityCategoryShare;
}

- (NSString *)activityType {
return _title;
}

- (NSString *)activityTitle {
return _title;
}

- (UIImage *)activityImage {
return _shareImage;
}

- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems {
return YES;
}

- (UIViewController *)activityViewController {
return nil;
}

- (void)performActivity {
if (nil == _title) {
return;
}

NSLog(@"%@", _shareContentArray);
NSLog(@"%@", _title);

[self activityDidFinish:YES];//默认调用传递NO
}

- (void)activityDidFinish:(BOOL)completed {
if (completed) {
NSLog(@"%s", __func__);
}
}

@end


以上都是一些需要重写的方法,作用基本看方法名就知道了。

UIActivityViewController

UIActivityViewController用于呈现这些分享功能,主要调用initWithActivityItems:applicationActivities:方法将各个分享功能加进来即可。

建立好CustomActivity之后,使用非常简便,如下:

- (void)actionActivityViewController:(UIButton *)sender {
NSString *title = @"My Title";
NSString *content = @"My Content";
UIImage *image = [UIImage imageNamed:@"CustomActivity"];
NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];
NSArray *activityItems = @[title, content, image, url];
CustomActivity *customActivity = [[CustomActivity alloc] initWithImage:image atURL:url atTitle:title atShareContentArray:activityItems];

NSArray *apps = @[customActivity];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:apps];
activityVC.excludedActivityTypes = @[UIActivityTypeMessage, UIActivityTypeCopyToPasteboard];
[self presentViewController:activityVC animated:YES completion:nil];
}


初始化一个CustomActivity的实例对象,然后通过UIActivityViewController将其present处理即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios UIActivity 分享