我在从tableview的屏幕截图中删除灰色区域时遇到了问题。
这是我尝试截取UITableView
时的输出(我实际上隐藏了一些不需要的tableViewCell
,这可能就是为什么区域显示为灰色)
感谢任何帮助!
非常感谢! :)
答案
我使用@kishan和@Sneak的答案找到了解决方案。
当我以编程方式截取我的UITableView
时,我只是将视图和桌面视图的backgroundColor
更改为代码中的白色。
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
}
答案 0 :(得分:0)
试着希望它的工作:)
tableView.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;
答案 1 :(得分:0)
这里你看到的灰色是tableview的页脚视图,所以你可以将该视图设为nil或者像这样初始化它
tableView.tableFooterView = UIView()
这可以解决您的问题......