2017-02-09 6 views
1

У меня проблемы с удалением серых областей со снимка экрана таблицы.Swift 3: Как удалить серые области снимка экрана UITableView

Это выход, когда я попытался скриншот UITableView (я на самом деле скрыть некоторые из tableViewCell, который не нужен, наверное, именно поэтому область отображается серым цветом)

Любая помощь приветствуется!

спасибо! :)

Ответ

Я нашел решение, используя @kishan и @ ответ красться в. Как я скриншот моего 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

таблицаView.backgroundColor может быть? –

+0

Измените y вашего вида таблицы. – User511

+0

@ User511 Что вы подразумеваете под «y»? – codingStudent

ответ

0

попробовать эту надежду свою работу :)

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

У вас есть это в быстрой 3? :) – codingStudent

+0

self.tableView.backgroundColor = UIColor.lightGray и то же для всех :), и вы должны переопределить следующий метод переопределения func tableView (_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { cell.backgroundColor = UIColor.clear } –

+0

Не забудьте ответить на мой ответ;) –

0

Вот то, что вы видите серый цвет является footerview из Tableview, так что вы можете сделать это вид ноль или инициализировать его, как это

tableView.tableFooterView = UIView() 

Это может решить вашу проблему ...