2

私は天気予報アプリケーションに取り組んできました。メールで送信する既存の地図を添付/キャプチャする方法を知りたいですか?

任意のアイデアまたは任意の有用なリンク。事前に感謝します。

4

2 に答える 2

1

UIGraphicsGetImageFromCurrentContextを使用してスクリーンショットを撮ることができます。次に、このスクリーンショットを使用して電子メールに添付できます。

- (void)twitterButtonPressed {


    NSString *post=[[NSString alloc]initWithFormat:@"I've burned so far %d Calories today -  update from iPhone app Run Burn Calories!", self.userActivityTotalCount];
    NSURL *url=[NSURL URLWithString:@"www.xxx.uh.edu"];
    UIImage *iconImage2=[self imageWithImage:iconImage scaledToSize:CGSizeMake(73.0, 73.0)];
    if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
    {
        SLComposeViewController *twitterSheet=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
        [twitterSheet setInitialText:post];
        [twitterSheet addURL:url];
        [twitterSheet addImage:iconImage2];
        [self presentViewController:twitterSheet animated:YES completion:nil];
        SLComposeViewControllerCompletionHandler completion=^(SLComposeViewControllerResult result){
            switch (result) {
                case SLComposeViewControllerResultDone:
                    NSLog(@"posted successfully!");
                    break;
                case SLComposeViewControllerResultCancelled:
                    NSLog(@" could not posted!");
                    break;

                default:
                    break;
            }
            [twitterSheet dismissViewControllerAnimated:YES completion:nil];

        };
        twitterSheet.completionHandler=completion;

    }
    else{
        UIAlertView *alertView=[[UIAlertView alloc]initWithTitle:@"Sorry" message:@"You can't send a tweet right now, make sure your device has an internet connection and you have at least one Twitter account set up" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertView show];
    }

}

-(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage =UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;

}
于 2014-12-29T16:42:41.217 に答える
0

まず、既存の地図がまだこの形式になっていない場合は、画像に変換します。それが済んだら、メールの送信はとても簡単です。これは、メールを送信するためにアプリケーションに持っているコードのスニペットです。

- (void) emailPhoto {

    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;

    // Set the subject of email
    [picker setSubject:@"Subject of the Email"];

    // Add email addresses
    // Notice three sections: "to" "cc" and "bcc"
    //[picker setToRecipients:[NSArray arrayWithObjects:@"emailaddress1@domainName.com", @"emailaddress2@domainName.com", nil]];
    //[picker setCcRecipients:[NSArray arrayWithObject:@"emailaddress3@domainName.com"]];
    //[picker setBccRecipients:[NSArray arrayWithObject:@"emailaddress4@domainName.com"]];

    // Fill out the email body text
    NSString *emailBody = @"Text to appear in the email."; 

    // This is an HTML formatted email
    [picker setMessageBody:emailBody isHTML:NO];

    // Create NSData object as PNG image data from camera image
    // This is where I take my self.workingImage object and convert to data object
    NSData *data = UIImagePNGRepresentation(self.workingImage);

    // Attach image *data* object to the email
    [picker addAttachmentData:data mimeType:@"image/png" fileName:@"Image"];

    // Show email view
    [self presentModalViewController:picker animated:YES];

    // Now the user can send or cancel the email as they please

}
于 2012-10-19T17:34:12.213 に答える