我有一个400x320的视图(testView),我需要截取该视图的部分截图(例如rect =(50,50,200,200))。 我正在玩iOS 7中的drawViewHierarchy方法,但我无法弄清楚如何正确地做到这一点。
UIGraphicsBeginImageContextWithOptions(self.testView.bounds.size, NO, [UIScreen mainScreen].scale);
[self.testView drawViewHierarchyInRect:self.testView.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
任何帮助将不胜感激!
感谢。
答案 0 :(得分:36)
获取整个快照后,您可以在较小的图形上下文中绘制它,以便获得所需的部分:
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();
答案 1 :(得分:0)
尝试下面的代码行,
UIView *popSnapshot=[inputView snapshotViewAfterScreenUpdates:YES];