2016-11-23 33 views
1

我試圖在UITableView的單元格內拍攝視圖的屏幕截圖,但附加了代碼,我只能截取單元格邊界的截圖。問題是通過UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f)。我只能製作矩形尺寸的截圖,不能控制矩形的原點和 rect = [cell bounds]。所以請給我一些建議。拍攝屏幕在ios中的單元格內的視圖

{ 
    UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:path]; 
    __block CGRect rect = [cell bounds]; 
    UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [cell.layer renderInContext:context]; 
    UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
} 
+0

只是改變'[細胞界限]'與您需要採取的形象,細胞內的視圖的框架?你嘗試過嗎? – Tj3n

+0

我認爲,而不是[cell.layer renderInContext:context];你應該做[cell.DesiredView.layer renderInContext:context];你想把你想要的內容截圖在屏幕上 – yawnobleix

回答

4

採取截圖作爲一個正常的屏幕截圖,然後裁剪

-(UIImage *)cropImage:(UIImage *)image rect:(CGRect)cropRect 
{ 
    CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], cropRect); 
    UIImage *img = [UIImage imageWithCGImage:imageRef]; 
    CGImageRelease(imageRef); 
    return img; 
} 

使用這樣的:

UIImage *img = [self cropImage:viewImage rect:CGRectMake(150,150,100,100)]; 

爲了得到一個特定的tableView細胞的框架。使用這個:

CGRect myRect = [tableView rectForRowAtIndexPath:0];//example 0,1,indexPath 

希望這會有所幫助。請參閱本linklink2

+0

想知道爲什麼它downvoted – Injectios

+0

有人想要他的批評徽章 –

0
- (UIImage *) screenshot { 

    CGSize size = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height); 

    UIGraphicsBeginImageContextWithOptions(size, NO, [UIScreen mainScreen].scale); 

    CGRect rec = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); //set the frame 
    [self.view drawViewHierarchyInRect:rec afterScreenUpdates:YES]; 

    image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 

}