【问题标题】:UIActivityViewController to share multiple imagesUIActivityViewController 共享多张图片
【发布时间】:2014-09-06 18:46:34
【问题描述】:

我正在尝试通过类似于thisUIActivityViewController 共享图像。但是,如果我分享多张图片,Twitter 和 Facebook 将在 UIActivityViewController 中消失。

有没有办法为 Twitter 和 Facebook 共享一张图片,并为邮件分享几张图片作为附件?

编辑:

// return different string depends on the type
CustomActivityItemProvider *textProvider = [[CustomActivityItemProvider alloc] initWithText:textContent url:url title:textTitle];

NSMutableArray *applicationActivities = [NSMutableArray array];
NSMutableArray *activityItems = [@[
                                   textProvider,
                                   image,
                                   url
                                   ] mutableCopy];

// custom applicationActivities
...

// If add multiple images, facebook and twitter will not show up
for(int i = 0; i < [images count]; ++i)
{
    if(images[i] != image) [activityItems addObject:images[i]];
}

UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems
                                                                                 applicationActivities:applicationActivities];

[activityController setValue:textTitle forKey:@"subject"];
activityController.excludedActivityTypes = excludeActivities;

[self presentViewController:activityController animated:YES completion:nil];

有没有类似UIActivityItemProvider的方法?

【问题讨论】:

标签: ios uiactivityviewcontroller


【解决方案1】:

textActivityItemProvider 类似的方式我最终使用了:

ImageActivityItemProvider.h

#import <UIKit/UIKit.h>

@interface ImageActivityItemProvider : UIActivityItemProvider

@property (nonatomic, strong, readonly) UIImage *image;
@property (nonatomic, readonly) NSInteger index;
@property (nonatomic, readonly) NSInteger shouldShowIndex;

- (instancetype)initWithImage:(UIImage*)image index:(NSInteger)index shouldShowIndex:(NSInteger)shouldShowIndex;

@end

ImageActivityItemProvider.m

#import "ImageActivityItemProvider.h"

@interface ImageActivityItemProvider ()

@property (nonatomic, strong) UIImage *image;
@property (nonatomic) NSInteger index;
@property (nonatomic) NSInteger shouldShowIndex;

@end

@implementation ImageActivityItemProvider

- (instancetype)initWithImage:(UIImage*)image index:(NSInteger)index shouldShowIndex:(NSInteger)shouldShowIndex
{
    // make sure the placeholder is nil instead of the image
    self = [super initWithPlaceholderItem:nil];
    if (self)
    {
        self.image = image;
        self.index = index;
        self.shouldShowIndex = shouldShowIndex;
    }
    return self;
}

- (id)item
{
    if (
        [self.activityType isEqualToString:UIActivityTypeMail] ||
        self.index == self.shouldShowIndex
        )
    {
        return self.image;
    }
    return self.placeholderItem;
}

@end

【讨论】:

    猜你喜欢
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多