项目开发在测试阶段,突然发现一个问题,就是在iOS 9
系统中UITableView
的设置分组HeaderView或者FooterView背景色可能无用。做个笔记,记录一下,希望可以帮到一些同仁。
我在项目中是这样写的:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
NSDictionary *dict = self.viewModel.dataSource[section][0];
YDTitleValueTableHFView *head = [tableView dequeueReusableHeaderFooterViewWithIdentifier:[YDTitleValueTableHFView kk_reuseIdentifier]];
head.contentView.backgroundColor = [UIColor yd_colorF3F3F3];
head.titleLabel.font = [UIFont systemFontOfSize:12];
head.titleLabel.textColor = [UIColor whiteColor];
head.titleLeftMargin = 16;
head.titleLabel.text = dict[@"pre"];
return head;
}
但是我发现,设置head.contentView.backgroundColor
在iOS9上貌似不起作用,经过测试,发现以下方式可以解决:
- 直接在代理方法中返回一个设置好背景色的View
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 10)];
headerView.backgroundColor = [UIColor whiteColor];
return headerView;
}
- 设置
UITableViewHeaderFooterView
的backgroundView
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UITableViewHeaderFooterView *view = [tableView dequeueReusableHeaderFooterViewWithIdentifier:[UITableViewHeaderFooterView kk_reuseIdentifier]];
view.backgroundView = ({
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor whiteColor];
view;
});
return view;
}
网友评论