UITableViewHeaderFooterView contentView未设置为透明

时间:2016-12-26 18:04:57

标签: ios swift uitableview

我有一个带有背景图像的ViewController,它作为TableVC作为其子视图。 我希望表视图是透明的并且已经完成了,tableviewcell也是透明的。但是我很难让tableviewheaderfooterview变得透明,就像我将它的contentview backgroundcolor设置为clearColor一样 - 它显示为灰色。

我正在使用Xcode 7.3.1

private let collapsibleTableView : UITableView = {
   let tv = UITableView()
    tv.translatesAutoresizingMaskIntoConstraints = false
    tv.backgroundColor = .clearColor()
    tv.backgroundView = nil
    tv.separatorStyle = .None
    return tv
}()

另外,我已经将UITableViewHeaderFooterView子类化为我的自定义类,并且我也尝试将contentView背景颜色设置为clearColor

override func layoutSubviews() {
        super.layoutSubviews()
        contentView.backgroundColor = .clearColor()
}

另外,我已经尝试在我的VC文件中再次设置它

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let header = tableView.dequeueReusableHeaderFooterViewWithIdentifier("header") as? CustomTableViewHeader ?? CustomTableViewHeader(reuseIdentifier: "header")
        header.contentView.backgroundColor = .clearColor()
        header.titleLabel.text = "custom-text"
        header.delegate = self
        return header
    }

另外,我还将tableviewcell的背景设置为透明

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

            cell.backgroundColor = .clearColor()
            cell.contentView.backgroundColor = .clearColor()
}

但无论我做什么,headerview的背景都不会透明。

enter image description here

编辑:我也在SO上发现了post关于同样问题的问题,但是实施建议的解决方案是不行的

 header.contentView.layer.backgroundColor = UIColor.clearColor().CGColor

1 个答案:

答案 0 :(得分:0)

试试这个,直接将背景颜色更改为headerView,而不是更改headerView.contentView的颜色,对我来说就是这个例子

 public func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let view = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 50))
        view.backgroundColor = UIColor.clear
        return view
    }

因此,请将public func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?方法中的代码更改为此

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let header = tableView.dequeueReusableHeaderFooterViewWithIdentifier("header") as? CustomTableViewHeader ?? CustomTableViewHeader(reuseIdentifier: "header")
        header.backgroundColor = UIColor.clearColor()
        header.titleLabel.text = "custom-text"
        header.delegate = self
        return header
    }

我希望这有助于你