Objective c 用UIImage编写UIActivityTypeMessage

Objective c 用UIImage编写UIActivityTypeMessage,objective-c,ios6,uiactivityviewcontroller,uiactivity,Objective C,Ios6,Uiactivityviewcontroller,Uiactivity,我在想是否有人能提供一些见解。就我个人而言,我不知道如何用UIActivityTypeMessage发送UIImage,尽管有人说这是可能的 文件说: UIActivityTypeMessage 对象将提供的内容发布到Messages应用程序。使用此服务时,可以提供NSString和NSAttributedString对象作为活动项的数据。您还可以指定其内容使用sms方案的NSURL对象。 在iOS 6.0及更高版本中提供。 在UIActivity.h中声明 因此,据我所知,我只能发送NSSt

我在想是否有人能提供一些见解。就我个人而言,我不知道如何用UIActivityTypeMessage发送UIImage,尽管有人说这是可能的

文件说:

UIActivityTypeMessage

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

因此,据我所知,我只能发送NSString/NSURL。我看不到你这是可能的

我用这个:

UIImage *image; // some image here.

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

如果您有任何帮助,我们将不胜感激。

以下是如何将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

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

不确定您是否从AlassetLibrary获取图像,但如果是,请使用其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];
}

这正是我正在做的。将数组添加到UIActivityViewController。一切正常。我可以将图像共享到邮件、推特、Facebook、微博、复制、打印、保存到照相/摄像机上。。等,但我想通过彩信(iMessage)共享图像。它不允许使用UIImage进行合成。只有字符串和nsurl.Ahh。我确实误解了你的问题。很抱歉我刚查过,你当然是对的。仅用于消息的文本…奇怪。不幸的是,在应用程序内部,使用消息视图(即使使用UIActivityViewController)发送图像是不可能的。我的解决方案是将图像复制到粘贴板上,指示用户将图像粘贴到他们的消息中,然后使用UIApplication…@PsychoDad启动iOS消息应用程序,Apple camera app支持彩信功能以共享相机滚动图像。你对此有什么想法吗?@CornDogComputers,你在发送彩信(imessage)时是否能够添加图像?确认在iOS7中,使用标准UIActivityController共享imessage。作为额外的奖励,您还可以通过iMessage和AirDrop共享视频,而无需首先自己提取视频。在这两种情况下,在activityItems中传递ALAsset的NSURL。