iOS 7截取部分UIView的截图

时间:2013-12-13 02:24:38

标签: ios objective-c uiview ios7

我有一个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();

任何帮助将不胜感激!

感谢。

2 个答案:

答案 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];