I wanted to add separator line into the table view section. Currently the code for the header section view will be:
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
// recast your view as a UITableViewHeaderFooterView
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
header.backgroundView.backgroundColor = [UIColor clearColor];
header.textLabel.textColor = [UIColor blackColor];
[header.textLabel setFont:[UIFont fontWithName:@"Rubik-Regular" size:15.0]];
}
Behaviour 1: Add section header to only the third section. What did I try: Add a one pixel height, tableView width UIView, with all required properties set(color, etc) and add it as a sub-view to the section header view's. Add drop shadow with CGPoint(0,1) to the section header views.
A table view displays a single column of vertically scrolling content, divided into rows and sections. Each row of a table displays a single piece of information related to your app. Sections let you group related rows together.
The separatorInset property of UITableView is not new. It has been around since iOS 7 as a way to set the default inset for the separator between table view cells. It is a UIEdgeInsets but only the left and right values make any difference.
To hide UITableViewCell separator completely, simply set it's colour to UIColor. clearColor(). This will make the cell separator not visible.
Swift 4
override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerView = UIView()
let separatorView = UIView(frame: CGRect(x: tableView.separatorInset.left, y: footerView.frame.height, width: tableView.frame.width - tableView.separatorInset.right - tableView.separatorInset.left, height: 1))
separatorView.backgroundColor = UIColor.separatorColor
footerView.addSubview(separatorView)
return footerView
}
extension UIColor {
class var separatorColor: UIColor {
return UIColor(red: 244.0/255.0, green: 244.0/255.0, blue: 244.0/255.0, alpha: 1.0)
}
}
If you have
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
would be better to make it there:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
// recast your view as a UITableViewHeaderFooterView
UITableViewHeaderFooterView *header = // make header here
header.backgroundView.backgroundColor = [UIColor clearColor];
header.textLabel.textColor = [UIColor blackColor];
[header.textLabel setFont:[UIFont fontWithName:@"Rubik-Regular" size:15.0]];
// make a view with height = 1 attached to header bottom
UIView *separator = [[UIView alloc] initWithFrame:CGRectMake(0, header.frame.size.height, header.frame.size.width, 1)];
[separator setBackgroundColor:[UIColor yellowColor]];
[header addSubview:separator];
return header;
}
I used below code and it worked for me:
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerView = UIView()
let dummyView = UIView() //just a dummy view to return
let separatorView = UIView(frame: CGRect(x: tableView.separatorInset.left, y: footerView.frame.height, width: tableView.frame.width - tableView.separatorInset.right - tableView.separatorInset.left, height: 0.5))
separatorView.backgroundColor = UIColor.white
footerView.addSubview(separatorView)
if section == 1 {
return footerView
}
return dummyView
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With