问题
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