2011-08-03 33 views
5

我正在尝试保存截图,但只能做全屏。有任何方法可以采取部分截图吗?以iPad上的部分屏幕截图为例

下面是一个示例。假设我只想截取红色部分的截图。谢谢您的帮助。

http://img197.imageshack.us/img197/6499/sampleimagez.jpg

+2

从屏幕创建UIImage并将其裁剪为该视图框架的大小。 – runmad

+0

看看这个主题:http://www.iphonedevsdk.com/forum/iphone-sdk-development/74659-partial-screenshot.html另外,请随意选择一个用户名。欢迎来到StackOverflow! – Moshe

+0

@ j0k - 未选择用户名的新帐户被分配一个数字。 – Moshe

回答

4

它看起来像你想的是Web视图出现的屏幕截图。如果你想获得一个特定的视角的图像,只有该视图(+子视图),可以使用下面的代码:

- (UIImage*)captureView:(UIView*)view 
{ 
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 
     UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale); 
    else 
     UIGraphicsBeginImageContext(self.view.bounds.size); 

    CGContextRef context = UIGraphicsGetCurrentContext(); 

    [view.layer renderInContext:context]; 

    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return img; 
} 

只是通过网络查看到该功能,它应该工作。

编辑:

假设只是一个例子形象和你想要的是不包含在其自己的观点的领域,去加拿大开发的解决方案的屏幕截图。将图像裁剪到您想要的区域。

+0

这似乎并未捕获不在该视图中的主视图的子视图。 – MikeN

+0

你是什么意思? –

+0

如果有两个不同的视图相互叠加,我希望获得这些视图的交集的屏幕截图(实际上终端用户最终可见的屏幕区域)。此代码只会从其中一个子视图中获取图像。我希望它像OSX的“橡皮条”屏幕截图一样行事。 – MikeN