Swift 3:如何删除UITableView截图的灰色区域
我在从tableview的屏幕截图中删除灰色区域时遇到了问题。
这是我试图截图UITableView
的输出(我实际上隐藏了一些不需要的tableViewCell
,可能这就是为什么区域显示为灰色)
任何帮助表示赞赏!
非常感谢你! 🙂
回答
我用@kishan和@ Sneak的答案find了解决scheme。 正如我以编程方式截图我的UITableView
,我只是将代码中的视图和tableview的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,所以你可以使这个视图为零或者像这样初始化它
tableView.tableFooterView = UIView()
这可能会解决你的问题…
- 从iOS模拟器“显示P3”屏幕截图
- 当AVPlayer播放m3u8stream时,如何捕捉图像?
- 调用drawViewHierarchyInRect afterScreenUpdates:YES时,iOS8缩放毛刺
- 为什么view.layer.renderInContext()为相同大小的屏幕截图占用更多的临时内存
- 如何以编程方式截取iPhone主屏幕
- 如何将UIView转换为图像
- 在applicationDidEnterBackground之前显示一个视图或启animation面(避免活动视图截图)
- 从Youtube YTPlayerView获取当前帧
- _UIReplicantView和snapshotViewAfterScreen更新如何获取其内容?