12

如果有人可以提供一些见解,那就在徘徊。对于我的生活,我无法弄清楚如何使用 UIActivityTypeMessage 发送 UIImage ,尽管有人说这是可能的。

文档说:http: //developer.apple.com/library/ios/#documentation/UIKit/Reference/UIActivity_Class/Reference/Reference.html

UIActivityTypeMessage

该对象将提供的内容发布到消息应用程序。使用此服务时,您可以提供 NSString 和 NSAttributedString 对象作为活动项的数据。您还可以指定内容使用 sms 方案的 NSURL 对象。在 iOS 6.0 及更高版本中可用。在 UIActivity.h 中声明。

所以据我了解,我只能发送 NSString/NSURL。我不认为你这是可能的。

我正在使用这个:

UIImage *image; // some image here.

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[ image ] applicationActivities:nil];

任何帮助将非常感激。

4

2 回答 2

1

下面是如何使用文本和图像普遍使用 UIActivityViewController。

NSMutableArray *items = [NSMutableArray new];
[items addObject:@"Hello world!"];
[items addObject:[UIImage imageNamed:@"MyImage"]];
NSArray *activityItems = [NSArray arrayWithArray:items];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    [self presentViewController:self.activityViewController animated:YES completion:nil];
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    UIPopoverController *aPopoverController = [[UIPopoverController alloc] initWithContentViewController:activityViewController];
    [aPopoverController presentPopoverFromBarButtonItem:self.actionButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

// Examples:
// iPhone:
// http://anglerally.com/wp-content/uploads/2012/09/6-Default-568h@2x.png
// http://anglerally.com/wp-content/uploads/2012/09/7-Default-568h@2x.png
// iPad:
// http://anglerally.com/wp-content/uploads/2012/09/6-Default-Portrait@2xipad.png
// http://anglerally.com/wp-content/uploads/2012/09/7-Default-Portrait@2xipad.png
于 2012-09-26T14:38:58.990 回答
1

虽然在 iOS6 中使用 UIActivityViewController 似乎可以让消息应用程序出现在共享表中,但让它工作有一些秘密——iOS7 是另一回事,将 NSURL 传递给资产开箱即用。

不确定您是否从 ALAssetsLibrary 获取图像,但如果是这样,请使用 ALAsset 的 NSURL 而不是拉取 UIImage。份额表出现的时间很短。这不完全是我正在使用的代码,但类似。但在 iOS6 上,只要有附加图像,活动视图控制器就不会显示消息应用程序。

- (void) presentActivityViewController:(ALAsset*) asset {
    // add this to your viewController class

    NSDictionary *urls = [asset valueForProperty:ALAssetPropertyURLs];
    NSURL *url;
    if ([urls count]) {
        for (NSString *key in urls) {
            // I'm making an assumption that the URL I want is the first URL in the dictionary
            url = [urls objectForKey:key];
            break;
        }
    }

    NSArray *activityItems = @[url];
    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
    [self presentViewController:activityController animated:YES completion:nil];
}
于 2013-06-18T19:58:41.997 回答