我有自我观点,但我只想拍摄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;
为了做到这一点,我需要在这里做些什么改变?
感谢分配!
答案 0 :(得分: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();