objective-c - 用于截取整个 UITableView 的代码在 iOS 13 中不再起作用
问题描述
我多年来一直使用下面的代码来捕获 UITableView 的屏幕截图(包括隐藏的行)并将其保存到用户的手机图库或共享它。
由于他们更新到 iOS 13,它不再工作,它只捕获表格的可见部分,将其底部留空。
-(UIImage *)imageFromCurrentTable
{
CGRect frame = self.tableView.frame;
frame.size.height = self.tableView.contentSize.height;
self.tableView.frame = frame;
UIGraphicsBeginImageContext(self.tableView.bounds.size);
[self.tableView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);
return [UIImage imageWithData:data];
}
iOS 13 发生了什么变化?如何更新此代码?(代码是 Obj-C 但我也会接受快速的答案!)
解决方案
我遇到过这个问题。由于细胞重用,UIGraphicsGetImageFromCurrentImageContext
不能产生完整UITableView
的结构。
一种方式[非有效方式]:
- 在
cellForRowAtIndexPath
中,我们可以得到哪个UITableViewCell
使用。将该单元格存储在[Int: UITableViewCell]
. - 从 获取屏幕截图
UITableViewCell.contentView
。 - 将该屏幕截图的图像作为子视图
UIView
一一添加。 - 现在,
UIView
拥有UITableView
'scontentView
asImages
。 - 从 获取屏幕截图
UIView
。
推荐阅读
- java - Android Textview- 来自 Mysql 的非英语字符
- image - Matlab 位移矢量场
- python - SQLAlchemy Postgres 无法编译 JSONB 插入指令
- c++ - C 结构中的 std::vector
- vba - 检查单词中的一致大小写?
- javascript - 菜单水平滚动
- xml - 在 Zeep 中为元素添加可选属性
- python - Python - 我如何搜索字典键以查看它是否包含某个字符串
- android - 如何在setOnItemClickListener之外获取listView的值
- mysql - MySQL 客户端中有哪些可用的密码?