Swift3:如何去除UITableView截图的灰色区域
Swift 3: How to remove the grey areas of the screenshot of UITableView
我在从 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
}
尝试这个希望它的工作:)
tableView.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;
这里你看到的灰色是tableview的footerview,所以你可以把那个view设为nil或者像这样初始化它
tableView.tableFooterView = UIView()
这可能会解决您的问题...
我在从 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
}
尝试这个希望它的工作:)
tableView.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;
这里你看到的灰色是tableview的footerview,所以你可以把那个view设为nil或者像这样初始化它
tableView.tableFooterView = UIView()
这可能会解决您的问题...