Подтвердить что ты не робот

IOS 7 делает снимок экрана части UIView

У меня есть вид (testView), который равен 400x320, и мне нужно сделать снимок экрана части этого представления (например, rect = (50, 50, 200, 200)). Я играю с методом drawViewHierarchy в iOS 7, но я не могу понять, как это сделать правильно.

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

    [self.testView drawViewHierarchyInRect:self.testView.bounds afterScreenUpdates:YES];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

Любая помощь будет оценена!

Спасибо.

4b9b3361

Ответ 1

После получения всего снимка вы можете нарисовать его в меньшем графическом контексте таким образом, чтобы получить нужную часть:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(200, 200), YES, [UIScreen mainScreen].scale);
[image drawInRect:CGRectMake(-50, -50, image.size.width, image.size.height)];
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

РЕДАКТИРОВАТЬ: Еще лучше, нарисуйте иерархию непосредственно в этом меньшем контексте:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(200, 200), NO, [UIScreen mainScreen].scale);
[self.testView drawViewHierarchyInRect:CGRectMake(-50, -50, self.testView.bounds.size.width, self.testView.bounds.size.height) afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Ответ 2

Попробуйте ввести строку кода,

UIView *popSnapshot=[inputView snapshotViewAfterScreenUpdates:YES];