How to remove UITableView section header separator

跟風遠走 提交于 2020-02-28 01:27:27

问题


I would like to remove (or make them clearColor) UITableView's section header separators. Setting tableView.separatorStyle = .none doesn't work. I've also tried solutions from here, but none of them actually worked for me (maybe because the answers are pretty old). I still get this tiny separator below the section header.

I created the UITableView in Storyboard and add a UITableViewCell there. Then I set it as a header like this:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let cell = tableView.dequeueReusableCell(withIdentifier: "headerTableViewCell")
        return cell
    }

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        if section == 1 {
            return 49
        }
        return 0
    }

回答1:


Don't know why you are returning UITableViewCell in viewForHeaderInSection method so may be it is possible that is showing separator of that UITableViewCell. Try returning the contentView of cell instead of cell from viewForHeaderInSection method.

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let cell = tableView.dequeueReusableCell(withIdentifier: "headerTableViewCell")
    return cell.contentView
}



回答2:


Try this:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerView = UIView()
    headerView.backgroundColor = UIColor.clear
    return headerView
}



回答3:


I have solved this by following way:

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
        return 0.01
    }



回答4:


Turns out overriding layoutSubviews removes all the cell's separators, both section-related and cell-related.

@interface MyCustomCell : UITableViewCell

@end    

@implementation MyCustomCell

- (void)layoutSubviews {
    // don't call [super layoutSubviews]
    // can be left empty
    // does not harm other UI elements inside the contentView
}

@end

In multiple-cell sections, you may just want to only remove the Section-related separators (at the top of first cell and at the bottom of last cell), keeping inset, inter-cell, separators shown:

- (void)layoutSubviews {
    [super layoutSubviews];

    for (UIView *view in self.subviews) {
        if ([view isEqual:self.contentView]) continue;

        view.hidden = view.bounds.size.width == self.bounds.size.width;
    }
}


来源:https://stackoverflow.com/questions/42296265/how-to-remove-uitableview-section-header-separator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!