0

我有self.view,但我只想捕捉它的300x320。

得到这个代码:

UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

UIImage * imgPrintScreen = [[UIImage alloc]init];
imgPrintScreen = viewImage;

为了这样做,我需要在这里更改什么?

感谢分配!

4

1 回答 1

2

只需更改您要捕获的大小,而不是使用整个边界,使用您想要的大小。渲染将从视图的原点开始,并在超出边界时被剪裁。如果您需要更改视图实际剪辑的位置,只需在启动图像上下文后翻译上下文:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(300, 320), YES, 0.);
[self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

例如,如果您的视图是 600x320 并且您想捕获中间 300 点的宽度,您可以将上下文向左平移 150 点:

UIGraphicsBeginImageContextWithOptions(CGSizeMake(300, 320), YES, 0.);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, -150.f, 0.f);
[self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
于 2012-10-02T15:06:20.023 回答