【发布时间】:2018-02-15 11:18:44
【问题描述】:
为了截取视图,我正在使用此代码
-(UIImage *)renderImageFromView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return renderedImage;
}
现在假设我的视图大于屏幕尺寸,假设它相对于屏幕的矩形是 {-100, -100, screenWidth+100, screenHeight+100},我想截取我的这个视图的屏幕截图。 我目前正在使用此代码:
-(UIImage *)renderImageFromView:(UIView *)view withRect:(CGRect)frame
{
CGRect rect = {-100, -100, screenWidth+100, screenHeight+100};
UIGraphicsBeginImageContextWithOptions(rect.size, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return renderedImage;
}
但问题是: 最终图像包含来自 {0, 0, screenWidth + 100, screenHeight + 100} 的视图屏幕截图,但我希望它是 {-100, -100, screenWidth + 100, screenHeight + 100}。
有什么办法吗?
【问题讨论】:
-
只是为了澄清。你想从屏幕上截取一些东西吗?
-
是的,我想要部分在屏幕外的内容截图
-
我希望第一种方法即使对于大于屏幕的视图也可以工作。你试过了吗?
-
@MilanNosáľ 是的,我做到了。但是因为我使用的是 UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0),所以这只会生成屏幕大小的上下文
-
但是
view.bounds定义了上下文.. 你的意思是有些东西超出了视图的范围?
标签: ios objective-c ipad