2016-01-26 25 views
0

我有一個應用程序,您可以在其中將信息輸入到某些表單中,然後按下按鈕以通過圖像上顯示的信息向圖像發送電子郵件。我將表單中的字符串轉換爲UILabels,並將這些字符串放在UIImageView上,然後嘗試獲取該圖像並將其作爲附件發送給他人。當我按下按鈕時,我只是在電子郵件中獲得原始圖像。這裏是我的代碼:在UIImageView中編輯圖像並使用新圖像

-(IBAction)emailToCustomer:(id)sender { 
    UIImage *rebateImage = [UIImage imageNamed:@"rebate.png"]; 

    UIImageView *rebateImView = [[UIImageView alloc]initWithImage:rebateImage]; 

    UILabel *rebateLabel = [[UILabel alloc]init]; 
    rebateLabel.text = productField.text; 

    [rebateImView addSubview:rebateLabel]; 

    NSData *rebateData = UIImagePNGRepresentation(rebateImView.image); 

    MFMailCOmposeViewController *mailVC = [[MFMailComposeViewController alloc]init]; 
    [mailVC setMailComposeDelegate:self]; 

    if([MFMailComposeViewController canSendMail]) { 
     [mailVC setSubject:@"Rebate"]; 
     [mailVC addAttachmentData:rebateData mimeType:@"image/png" filename:@"RebateCoupon.png"]; 
     [self presentViewController:mailVC animated:YES completion:nil]; 
    } else { 
     NSLog(@"Can't Send Mail"); 
    } 
} 

即使我在字段中輸入信息,我在電子郵件中收到的所有回扣圖像都是原始回扣圖像。我希望將來自productField的文本放在UIImageView的圖像上,並將新圖像附加到電子郵件中。

+0

您需要快照您的imageview以獲取帶有標籤的圖像。 –

+0

爲什麼你在圖像視圖上放置標籤,僅僅爲了電子郵件的目的而向圖像添加文本?沒有必要。通過在其上繪製文本從原始圖像創建新圖像。 – rmaddy

回答

0

即使您將標籤放置在圖像視圖上,它也只會返回其包含的圖像。

如果你想與它的標籤的圖像,你需要創建快照的ImageView的,並將其連接到郵件:

注意:你需要給ImageView的框架,否則快照你獲取將不會是圖像視圖。

- (UIImage*)captureView:(UIView *)view 
{ 
    CGRect rect = [view frame]; 
    UIGraphicsBeginImageContext(rect.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [self.view.layer renderInContext:context]; 
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return img; 
} 

然後,您可以通過附加圖片:

UIImage *img=[self captureView: rebateImView]; 
    NSData *rebateData = UIImagePNGRepresentation(img); 

另一種方式:您需要重新繪製所需的文本圖像。請參考answer

+0

我仍然沒有添加文字的圖像 – FreeFire

+0

我更新了答案,請再試一次。 –

+0

我得到了視圖本身的屏幕截圖,而不是圖像視圖。我要更改captureView方法的參數並查看它是如何工作的 – FreeFire