2014-07-16 82 views
1

我試圖通過UIActivityViewController分享圖像,類似於this。不過,如果我分享多個圖片,Twitter和Facebook將在UIActivityViewController中消失。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

+0

顯示到目前爲止什麼您試過的代碼? – karthikeyan

+0

添加示例代碼,謝謝 – siutsin

+0

嘗試此鏈接http://stackoverflow.com/questions/12984403/uiactivityviewcontroller-email-and-twitter-sharing – karthikeyan

回答

0

以類似的方式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 
相關問題