2012-09-26 43 views
12

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

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

UIActivityTypeMessage

对象的帖子所提供的内容,消息应用程序。使用此服务时,可以为活动项目提供NSString和NSAttributedString对象作为数据。你也可以指定其内容使用sms方案的NSURL对象。 Available in iOS 6.0及更高。 在UIActivity.h中声明。

所以根据我的理解,我只能发送NSString/NSURL。我不认为你有可能。

我使用这个:

UIImage *image; // some image here. 

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

任何帮助将非常感激。

回答

1

虽然似乎有可能得到的消息应用程序出现在iOS6的使用UIActivityViewController份额片,有一些秘诀,得到它的工作 - iOS7是一个不同的故事,传递NSURL到资产开箱即用。

不确定你是否从ALAssetsLibrary获取图像,但如果是这样,请使用其NSURL获取ALAsset,而不是拉动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]; 
} 
+1

确认在iOS7中,与iMessage共享可与标准UIActivityController配合使用。作为额外的好处,您还可以通过iMe​​ssage和AirDrop共享视频,而无需先自行解压。在这两种情况下,都要在activityItems中传递ALAsset的NSURL。 –

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/[email protected] 
// http://anglerally.com/wp-content/uploads/2012/09/[email protected] 
// iPad: 
// http://anglerally.com/wp-content/uploads/2012/09/[email protected] 
// http://anglerally.com/wp-content/uploads/2012/09/[email protected] 
+0

这正是我正在做的。将数组添加到UIActivityViewController。所有的作品都很好。我可以将图像分享到Mail,Twitter,Facebook,微博,复制,打印,保存到相机胶卷等。但我想通过彩信(iMessage)共享图像,它不允许与UIImage组成。只有字符串和nsurl。 – corndogcomputers

+0

啊。我误解了你的问题。抱歉!我刚刚检查过,你当然是对的。文字只为消息...奇怪。 –

+3

不幸的是,在应用程序中发送带有消息视图的图像(即使使用UIActivityViewController)也是不可能的。我的解决方案是将图像复制到粘贴板,指导用户将图像粘贴到消息中,然后使用UIApplication启动iOS消息应用程序... – jjxtra