2013-11-23 101 views
0

我想知道代码截图并调出电子邮件窗口并通过在应用程序中按一个按钮将截屏附加到电子邮件。到目前为止,我已经编写了代码来调出电子邮件窗口,只需按一下按钮,我就可以使用相同的按钮来获取并附加屏幕截图。如果你能指出我正确的方向,将不胜感激。应用内截图并附加到电子邮件IOS

- (IBAction)showEmail:(id)sender { 
    NSString *emailTitle = @"Test Email"; 
    NSString *messageBody = @"CHECK OUT MY NEW SCORE!"; 
    NSArray *toRecipents = [NSArray arrayWithObject:@"[email protected]"]; 

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init]; 
    mc.mailComposeDelegate = self; 
    [mc setSubject:emailTitle]; 
    [mc setMessageBody:messageBody isHTML:NO]; 
    [mc setToRecipients:toRecipents]; 

    // Present mail view controller on screen 
    [self presentViewController:mc animated:YES completion:NULL]; 
} 

回答

4

MFMailComposeViewController类具有此功能。

-(void)addAttachmentData:(NSData*)attachment mimeType:(NSString*)mimeType fileName:(NSString*)filename 

这将让屏幕截图

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 
    UIGraphicsBeginImageContextWithOptions(self.window.bounds.size, NO, [UIScreen mainScreen].scale); 
else 
    UIGraphicsBeginImageContext(self.window.bounds.size); 
[self.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
NSData * data = UIImagePNGRepresentation(image); 

然后做到这一点在你的代码

[mc addAttachmentData:data mimeType:@"image/png" fileName:@"myscreenshot.png"]; 
0

嘿Sendgrid传播者这里,下面的代码使用的iOS 7的功能,采取截图和我们的iOS SDK发送图像。

- (UIImage *)screenshot { 
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale); 

    [self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES]; 

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 
} 

- (IBAction)sendScreenshot:(id)sender { 
    UIImage *screen = [self screenshot]; 
    sendgrid *msg = [sendgrid user:@"username" andPass:@"password"]; 

    msg.to = @"[email protected]"; 
    msg.subject = @"screenshot"; 
    msg.from = @"[email protected]"; 
    msg.text = @"screenshot"; 
    msg.html = @"<h1>screenshot</h1>"; 

    [msg attachImage:screen]; 
    [msg sendWithWeb]; 
}