2011-07-04 23 views
1

私は以下のコードを持つアプリ内スクリーンショットを作成しようとしています。画面領域の選択

スクリーンショットの領域を選択するにはどうすればよいですか?例えばUInavigationバーと下部のタブバーを取り除きたい。どのようなコードを追加する必要がありますか?

UIGraphicsBeginImageContext(self.view.frame.size); 
     [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
     UIImage * image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 

     NSData * imageData = UIImageJPEGRepresentation(image, 1.0); 

     if ([MFMailComposeViewController canSendMail]) { 
      MFMailComposeViewController * mailComposer = [[MFMailComposeViewController alloc] init]; 
      mailComposer.mailComposeDelegate = self; 
      [mailComposer addAttachmentData:imageData mimeType:@"image/jpeg" fileName:@"attachment.jpg"]; 

答えて

2

あなたは地域のrectを特定し、必要な画像を得るために、画像の一部を切り抜くことができます。

.... 

/* Identify the region that needs to be cropped */ 
CGRect navigationBarFrame = self.navigationController.navigationBar.frame; 
CGRect tabBarFrame = self.tabBarController.tabBar.frame; 

CGRect screenshotFrame; 
screenshotFrame.origin.x = 0; 
screenshotFrame.origin.y = navigationBarFrame.size.height; 
screenshotFrame.size.width = navigationBarFrame.size.width; 
screenshotFrame.size.height = tabBarFrame.origin.y - screenshotFrame.origin.y; 

/* Crop the region */ 
CGImageRef screenshotRef = CGImageCreateWithImageInRect(image, screenshotFrame); 
UIImage * screenshot = [[(UIImage *)screenshotRef retain] autorelease]; 
CGImageRelease(screenshotRef); 

/* Convert to data and send */ 
NSData * screenshotData = UIImageJPEGRepresentation(screenshot, 1.0); 

if ([MFMailComposeViewController canSendMail]) { 
     .... 
    [mailComposer addAttachmentData:screenshotData 
          mimeType:@"image/jpeg" 
          fileName:@"attachment.jpg"]; 
     .... 
} 

手動で適切self.navigationController.navigationBarself.tabBarController.tabBarを交換後、ナビゲーションバーおよび/またはタブバーを使用している場合。

+0

非常に詳細で便利です。どうもありがとうございました。 – Clarence

+0

こんにちはdeepak、私は同じアプリを開発する必要があります。あなたが私を助けてくれますか? –

関連する問題