2016-11-23 6 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

изменения Just '[клеточных границ]' с рамкой зрения внутри этой клетки, что вам нужно принять образ? Вы пробовали это? – 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 Cell. Используйте это:

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

Надеюсь, что это поможет. Обратитесь к этому linklink2

+0

Удивление, почему оно ниспровергнуто – 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; 

}