2012-06-08 3 views
2

Я хочу взять screenhot из ViewController мне пришлось написать это: -скриншот Take из UIView + Ipad

- (UIImage *)captureScreenInRectWOScroll:(CGRect)captureFrame {  
    CALayer *layer; 
    layer = self.view.layer; 
    UIGraphicsBeginImageContext(captureFrame.size); 
    CGContextClipToRect (UIGraphicsGetCurrentContext(),captureFrame); 
    [layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return screenImage; 
} 

Путь я звоню этот метод: -

UIImage *img_woscroll1 =[self captureScreenInRectWOScroll:CGRectMake(35,147,497,260)]; 

Я Wann к снимите снимок экрана с адреса снизу: - enter image description here

Когда я беру снимок скриншота из приведенного выше кода, я получил изображение с lo т пустого пространства (greencolor изображения сверху) на верхней стороне, если изображение: -

enter image description here

Пожалуйста, помогите me..How принять правильный скриншот изображения, так что я не получу пустое изображение на надводном.

ответ

3

Try This

UIGraphicsBeginImageContext(myView.frame.size); 
[myView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
NSData *data=UIImagePNGRepresentation(viewImage); 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *strPath = [documentsDirectory stringByAppendingPathComponent:@"myimage.png"]; 
[data writeToFile:strPath atomically:YES]; 
2

Попробуйте: -

CGRect screenRect = CGRectMake(0, 90, 320,460); 
UIGraphicsBeginImageContext(screenRect.size); 

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextFillRect(ctx, screenRect); 

//you probably need an offset, adjust here 
CGContextTranslateCTM(ctx, -20, -20); 
[self.view.layer renderInContext:ctx]; 

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

Это может помочь вам. Спасибо :)

1

Попробуйте с этим. Это может вам помочь.

- (UIImage *)captureView:(UIView *)view { 
CGRect screenRect = [[UIScreen mainScreen] bounds]; 

UIGraphicsBeginImageContext(screenRect.size); 

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
[[UIColor blackColor] set]; 
CGContextFillRect(ctx, screenRect); 

[view.layer renderInContext:ctx]; 

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

return newImage; 

}

+0

я найти его здесь. http://stackoverflow.com/questions/879064/how-to-capture-current-view-screenshot-and-reuse-in-code-iphone-sdk – Nikunj

+0

спасибо за ответ. Но какой вид я должен пройти в методе? может у просьба предложить мне –

+0

Я думаю, вы можете передать self.view или self.navigationController.view. Я думаю, что оба могут работать с проверкой PLS. – Nikunj

Смежные вопросы