Swift 3:如何去除 UITableView 截图的灰色区域 [英] Swift 3: How to remove the grey areas of the screenshot of UITableView
问题描述
我在从 tableview 的屏幕截图中删除灰色区域时遇到了问题.
这是我尝试截取 UITableView
时的输出(我实际上隐藏了一些不需要的 tableViewCell
,可能这就是区域显示灰色的原因)>
感谢任何帮助!
非常感谢!:)
回答
我通过使用@kishan 和@Sneak 的回答找到了解决方案.当我以编程方式截取我的 UITableView
时,我只是在代码中将视图和 tableview 的 backgroundColor
更改为白色.
func screenshot() ->用户界面{var image = UIImage();UIGraphicsBeginImageContextWithOptions(self.tableView.contentSize, false, UIScreen.main.scale)//保存初始值让savedContentOffset = self.tableView.contentOffset;让savedFrame = self.tableView.frame;让savedBackgroundColor = self.tableView.backgroundColor//重置偏移量到左上角self.tableView.contentOffset = CGPoint(x: 0, y: 0);//将框架设置为内容大小self.tableView.frame = CGRect(x: 0, y: 0, width: self.tableView.contentSize.width, height: self.tableView.contentSize.height);//设置背景为白色//-->//self.tableView.backgroundColor = UIColor.white//使用滚动视图内容大小制作临时视图//当 ipad 上的图像绘制不正确时的解决方法让 tempView = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.contentSize.width, height: self.tableView.contentSize.height));//-->//tempView.backgroundColor = UIColor.white//保存超级视图让 tempSuperView = self.tableView.superview//从旧的超级视图中删除滚动视图self.tableView.removeFromSuperview()//并添加到 tempViewtempView.addSubview(self.tableView)//渲染视图//drawViewHierarchyInRect 不能正常工作tempView.layer.render(in: UIGraphicsGetCurrentContext()!)//并获取图像image = UIGraphicsGetImageFromCurrentImageContext()!;//并返回所有内容tempView.subviews[0].removeFromSuperview()tempSuperView?.addSubview(self.tableView)//恢复保存的设置self.tableView.contentOffset = savedContentOffset;self.tableView.frame = savedFrame;self.tableView.backgroundColor = savedBackgroundColorUIGraphicsEndImageContext();返回图像}
试试这个希望它的工作 :)
tableView.backgroundColor = [UIColor clearColor];tableView.opaque = NO;tableView.backgroundView = nil;
I've facing problems in removing the grey areas from the screenshot of the tableview.
This is the output when I tried to screenshot a UITableView
(I actually hide some of the tableViewCell
that's not needed, probably that's why area appears grey colour)
Any help is appreciated!
Thank you very much! :)
Answer
I found the solution by using @kishan and @Sneak's answer.
As I've screenshot my UITableView
programmatically, I just changed the view's and tableview's backgroundColor
to white in the codes.
func screenshot() -> UIImage{
var image = UIImage();
UIGraphicsBeginImageContextWithOptions(self.tableView.contentSize, false, UIScreen.main.scale)
// save initial values
let savedContentOffset = self.tableView.contentOffset;
let savedFrame = self.tableView.frame;
let savedBackgroundColor = self.tableView.backgroundColor
// reset offset to top left point
self.tableView.contentOffset = CGPoint(x: 0, y: 0);
// set frame to content size
self.tableView.frame = CGRect(x: 0, y: 0, width: self.tableView.contentSize.width, height: self.tableView.contentSize.height);
// set background to white
//-->// self.tableView.backgroundColor = UIColor.white
// make temp view with scroll view content size
// a workaround for issue when image on ipad was drawn incorrectly
let tempView = UIView(frame: CGRect(x: 0, y: 0, width: self.tableView.contentSize.width, height: self.tableView.contentSize.height));
//-->//tempView.backgroundColor = UIColor.white
// save superview
let tempSuperView = self.tableView.superview
// remove scrollView from old superview
self.tableView.removeFromSuperview()
// and add to tempView
tempView.addSubview(self.tableView)
// render view
// drawViewHierarchyInRect not working correctly
tempView.layer.render(in: UIGraphicsGetCurrentContext()!)
// and get image
image = UIGraphicsGetImageFromCurrentImageContext()!;
// and return everything back
tempView.subviews[0].removeFromSuperview()
tempSuperView?.addSubview(self.tableView)
// restore saved settings
self.tableView.contentOffset = savedContentOffset;
self.tableView.frame = savedFrame;
self.tableView.backgroundColor = savedBackgroundColor
UIGraphicsEndImageContext();
return image
}
try this hope its work :)
tableView.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;
这篇关于Swift 3:如何去除 UITableView 截图的灰色区域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!