2013-05-06 30 views
5

UIActivityViewControllerでURL​​を共有すると、Safariコンパスが表示されます。私は、これは、彼らがリンクを共有していることをユーザーに示すはずですが、代わりにサムネイル/画像を表示するようにすることは可能ですか?イメージを共有しようとすると、これが実現することが分かりますが、ここでリンクを共有したいと思っています。UIActivityViewControllerのURL添付ファイルのサムネイルを表示

答えて

1

NSURLを直接共有する代わりに、UIActivityItemSourceプロトコルを実装するオブジェクトを共有できます。これはNSURLをラップし、activityViewController:itemForActivityType:メソッドが呼び出されたときにそれを返すオブジェクトに過ぎません。

次に、オプションダイアログactivityViewController:thumbnailImageForActivityType:suggestedSize:を実装して、共有ダイアログのサムネイルを指定することができます。例えば

@interface URLWrapper:UIActivityItemProvider 

@property (nonatomic, strong) NSURL *url; 

@end 

@implementation URLWrapper 

+ (instancetype)activityItemSourceUrlWithUrl:(NSURL *)url { 
    URLWrapper *wrapper = [[self alloc] initWithPlaceholderItem:@""]; 
    wrapper.url = url; 

    return wrapper; 
} 

- (id)activityViewControllerPlaceholderItem:(UIActivityViewController *)activityViewController { 
    return [self activityViewController:activityViewController itemForActivityType:nil]; 
} 

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType { 
    return self.url; 
} 

- (UIImage *)activityViewController:(UIActivityViewController *)activityViewController thumbnailImageForActivityType:(NSString *)activityType suggestedSize:(CGSize)size { 
    UIImage* thumbnail; // get image from somewhere! 
    return thumbnail; 
} 

@end 

あなたは、あなたはNSURLの通常のインスタンスを共有するのと同じように包まれたURLを共有することができます。

+2

これは動作していないようです(XCode7/iOS9でテスト済み)。 thumbnailImageForActivityTypeは決して呼び出されません。 Facebookやメール共有オプションを試してみました。おそらくそれは他のいくつかの共有オプションで動作します。 – Ciryon

+1

私はthumbnailImageForActivityTypeが写真のような画像を共有するために使用されると思います。画像を選択できます – CiNN

関連する問題