Swift 3:如何删除UITableView屏幕截图的灰色区域

时间:2017-02-09 03:56:51

标签: ios uitableview swift3 screenshot

我在从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
}

2 个答案:

答案 0 :(得分:0)

试着希望它的工作:)

tableView.backgroundColor = [UIColor clearColor];
tableView.opaque = NO;
tableView.backgroundView = nil;

答案 1 :(得分:0)

这里你看到的灰色是tableview的页脚视图,所以你可以将该视图设为nil或者像这样初始化它

tableView.tableFooterView = UIView() 

这可以解决您的问题......