iOS 7 taking screenshot of part of a UIView

前端 未结 2 1454
灰色年华
灰色年华 2021-01-30 11:56

I have a view (testView) that is 400x320 and I need to take a screenshot of part of this view (say rect = (50, 50, 200, 200)). I am playing around with the drawViewHierarchy me

2条回答
  •  再見小時候
    2021-01-30 12:30

    After getting the whole snapshot, you could draw it in a smaller Graphic Context in a way that you get the part you want:

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

    EDIT: Better yet, draw the hierarchy directly in that smaller context:

    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();
    

提交回复
热议问题