如何捕获tableView可见部分的UIImage

时间:2014-02-19 16:56:56

标签: ios objective-c uitableview uiimage

我是第一个使用UIGraphicsBeginImageContext的人。 我想将tableView的可见部分捕获到UIImage并将其放到新CALayer的内容中。 这是我的代码:

UIGraphicsBeginImageContext(tableView.frame.size);

[tableView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

CGRect frame = [self.view.window convertRect:view.frame fromView:tableView.superview];
CALayer *imageLayer = [CALayer layer];
imageLayer.contents = (id)image.CGImage;
imageLayer.frame = frame;

但是,如果我向下滚动tableView,捕获图像的顶部将是白色的。 我使用UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);查看结果。

经过长时间的回答,我不得不在这里提出这个问题,希望有人能帮助我! 谢谢!

1 个答案:

答案 0 :(得分:1)

创建一个名为“viewHolder”的视图,将其设置为“clipsToBounds”为yes。将tableView作为子视图添加到viewHolder。现在使用:

UIGraphicsBeginImageContext(viewHolder.frame.size);

[viewHolder.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();