Выбор области экрана - PullRequest
1 голос
/ 04 июля 2011

Я пытаюсь сделать скриншот в приложении, у меня есть следующие коды.

Как можно выбрать область для скриншота? например Я хочу избавиться от панели 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"];

1 Ответ

2 голосов
/ 04 июля 2011

Вы можете определить 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.navigationBar и self.tabBarController.tabBar соответственно.

...