如何捕获tableView可见部分的UIImage

Posted

技术标签:

【中文标题】如何捕获tableView可见部分的UIImage【英文标题】:How to capture UIImage of the visible part of tableView 【发布时间】:2014-02-19 16:56:55 【问题描述】:

我是第一个使用 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); 来查看结果。

找了好久才在这里问这个问题,希望有人能帮帮我! 谢谢!

【问题讨论】:

您的目标是什么版本的 ios 你试过[view.layer renderInContext而不是[tableView.layer renderInContext吗? @AlbertRenshaw 抱歉我的错误,viewtableView 【参考方案1】:

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

UIGraphicsBeginImageContext(viewHolder.frame.size);

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

UIGraphicsEndImageContext();

【讨论】:

@HonghaoZhang 很高兴我能帮上忙 :)

以上是关于如何捕获tableView可见部分的UIImage的主要内容,如果未能解决你的问题,请参考以下文章

如何将手势识别器添加到 UITableViewCell 的 UIImage 和 UIButton?

点击 tableview 单元格时如何更改 UIImage 颜色?

如何使用 UIImage 从 tableview 单元格中的 url 平滑滚动

捕获显示横向方向的 UIimage 视图中存储的图像

tableView:cellForRowAtIndexPath:不仅为可见单元格调用吗?

如何刷新 UITableViewCell 中的 UIImage?