iOS 7 taking screenshot of part of a UIView

前端 未结 2 1453
灰色年华
灰色年华 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:19

    Try below line of code,

    UIView *popSnapshot=[inputView snapshotViewAfterScreenUpdates:YES];
    
    0 讨论(0)
  • 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();
    
    0 讨论(0)
提交回复
热议问题