屏幕截图超出屏幕范围

时间:2014-02-25 14:15:16

标签: objective-c uiimage calayer uigraphicscontext

我正在使用UIGraphicsBeginImageContextWithOptions来获取当前显示的屏幕(UITable)的屏幕抓取。

这是我的代码:

UIGraphicsBeginImageContextWithOptions(self.view.frame.size, self.view.opaque, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

然后我使用 图片 对象作为我的屏幕的屏幕抓取。

我的问题是我希望屏幕抓取包含当前未显示数据的额外100个像素(如果我向下滚动则会显示)。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

- (IBAction) renderScrollViewToImage
 {
   UIImage* image = nil;

   UIGraphicsBeginImageContext(_scrollView.contentSize);
  {
    CGPoint savedContentOffset = _scrollView.contentOffset;
    CGRect savedFrame = _scrollView.frame;

    _scrollView.contentOffset = CGPointZero;
    _scrollView.frame = CGRectMake(0, 0, _scrollView.contentSize.width, _scrollView.contentSize.height);

    [_scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];     
    image = UIGraphicsGetImageFromCurrentImageContext();

    _scrollView.contentOffset = savedContentOffset;
    _scrollView.frame = savedFrame;
   }
  UIGraphicsEndImageContext();

if (image != nil) {
    [UIImagePNGRepresentation(image) writeToFile: @"/tmp/test.png" atomically: YES];
    system("open /tmp/test.png");
  }
}

参考link