新的iOS 7更改了tableview中节标题的默认字体颜色。问题是我的背景图像使文本难以阅读。我知道我可以改变我的背景,但我想改变所有文本视图的颜色。我之前在我的应用委托中更改了uinavigationbar颜色。如果可能的话,我想在tableview中使用类似的东西。我读过这个方法:
NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section];
if (sectionTitle == nil) {
return nil;
}else{
UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(20, 8, 320, 16);
label.textColor = [UIColor whiteColor];
label.text = sectionTitle;
UIView *view = [[UIView alloc] init];
[view addSubview:label];
return view;
}
我的问题是我必须在每个tableviewcontroller的基础上实现它。此外,当我使用它时,我不知道如何防止文本离开页面并且不可读。
任何建议都会很棒。提前谢谢。
编辑:我已经决定为演示添加一些澄清,使用一些建议的代码,这仍然是我的问题与此解决方案。
编辑:请回答。我发现这也需要为标题创建多行的空间。-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
if (section == ?) {
return 60;
}
else{
return 44;
}
}
答案 0 :(得分:2)
您必须使用以下方法更改标题视图:
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,yourWidth,YourHeight)] ;
headerView.backgroundColor = [UIColor colorWithRed:0.5058f green:0.6118f blue:0.8078f alpha:1.0f];
tableView.sectionHeaderHeight = headerView.frame.size.height;
tableView.tableHeaderView.clipsToBounds = YES;
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 13,320, 22)] ;
label.text = [self tableView:tableView titleForHeaderInSection:section];
label.font = [UIFont boldSystemFontOfSize:16.0];
label.shadowOffset = CGSizeMake(0, 1);
label.shadowColor = [UIColor grayColor];
label.backgroundColor = [UIColor clearColor];
// Chnage your title color here
label.textColor = [UIColor whiteColor];
[label sizeToFit];
label.numberOfLines = 2 ;
[headerView addSubview:label];
return headerView;
}