以编程方式限制屏幕截屏

时间:2013-11-14 11:20:01

标签: ios image screenshot

我正在制作与图像相关的应用程序。 我的屏幕上有多个图像。 我拍了那个屏幕截图。 但我想拍一些有限区域的屏幕截图, 所以基本上我想限制屏幕截图的框架。 下面是我的截屏代码。

-(UIImage *) screenshot
{
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, [UIScreen mainScreen].scale);

    [self.view drawViewHierarchyInRect:self.view.frame afterScreenUpdates:YES];

    image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}
拍摄屏幕截图后,我通过facebook分享方法中的以下代码使用它,

UIImage *image12 = [self screenshot];

[mySLComposerSheet addImage:image12];

2 个答案:

答案 0 :(得分:0)

类似的东西:

-(UIImage *)ConvertToImage:(UIView *)view
{
    UIGraphicsBeginImageContext(view.frame.size);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return viewImage;
}

答案 1 :(得分:0)

如果我理解正确,你想拍摄截图并裁剪它。有很多选择,这是其中之一:

UIGraphicsBeginImageContext(self.view.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); /* this is the full capture */
CGRect r = (CGRect){{image.size.width * 0.25, image.size.height * 0.25}, {image.size.width / 2, image.size.height / 2}};
CGImageRef ref = CGImageCreateWithImageInRect(image.CGImage, r);
UIImage *cropped = [UIImage imageWithCGImage:ref]; /* this is the center area */
CGImageRelease(ref);
UIGraphicsEndImageContext();

只需捕捉正确的视图并计算出正确的矩形。

在iOS 7中,您可以更快UIView使用drawViewHierarchyInRect:afterScreenUpdates:代替renderInContext