设置UITableView节标题的样式

设置UITableView节标题的样式,uitableview,ios5,xcode4.2,Uitableview,Ios5,Xcode4.2,我使用的是iOS5,在一个表中动态生成了单元格(2个部分,每个部分有3行)。每个节都有一个头,该头也是使用titleForHeaderInSection调用动态生成的 我还设置了一个图像作为表的背景,这使得节标题的默认颜色很难读取。我还没有找到通过脚本界面或编程方式更改节标题颜色(或阴影颜色,字体,文本大小,等等)的方法!请帮忙 您可以通过使用方法tableView:viewForHeaderInSection: 这也适用于iOS5+。它适用于tableview中的所有节页眉和页脚,适合我的需要

我使用的是iOS5,在一个表中动态生成了单元格(2个部分,每个部分有3行)。每个节都有一个头,该头也是使用
titleForHeaderInSection
调用动态生成的


我还设置了一个图像作为表的背景,这使得节标题的默认颜色很难读取。我还没有找到通过脚本界面或编程方式更改节标题颜色(或
阴影颜色
字体
文本大小
,等等)的方法!请帮忙

您可以通过使用方法
tableView:viewForHeaderInSection:


这也适用于iOS5+。它适用于tableview中的所有节页眉和页脚,适合我的需要

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setFont:[UIFont fontWithName:@"MyFont" size:8]];
}

Dan

UITableViewHeaderFooterView类实现了一个可重用的视图,该视图可以放置在表部分的顶部或底部。您可以使用页眉和页脚显示该节的其他信息

可用性:iOS(6.0及更高版本)

例如:

[[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setColor:[UIColor whiteColor]];
获取自定义节标题的最简单方法是使用单元格! 非常类似于用于

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
您可以创建所提供的单元原型的实例。如果您的单元格包含标签的出口,则可以在返回标签之前进行设置:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger) section
{
    SessionTableViewCell *cell;
    cell = [tableView dequeueReusableCellWithIdentifier:@"SessionSectionHeader"];
    if (cell == nil) {
        cell = [[SessionTableViewCell alloc]
               initWithStyle:UITableViewCellStyleDefault
             reuseIdentifier:@"SessionSectionHeader"];
    }
    cell.myLabel.text = myTitles[section];
    return cell;
}
请注意,@“SessionSectionHeader”是我们单元原型故事板中的标识符

最简单的方法 如果您没有做太多修改,例如只是更改字体或颜色:

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    UITableViewHeaderFooterView *tableViewHeaderFooterView = (UITableViewHeaderFooterView *)view;
    tableViewHeaderFooterView.textLabel.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0f];
    tableViewHeaderFooterView.textLabel.textColor = [UIColor colorWithRed:0.27f green:0.27f blue:0.27f alpha:1.0f];
    tableViewHeaderFooterView.contentView.backgroundColor = [UIColor colorWithRed:0.87f green:0.87f blue:0.87f alpha:1.0f];
}

谢谢这就解决了!这正是我想要修改故事板中定义的表格部分的外观,而不需要实现
tableView:viewForHeaderInSection:
。谢谢不能在UILabel上使用外观代理。在Swift 2中,当包含InstancesofClass(:)方法时,可以使用静态的
外观来获得
UIAppearance
实例。例如,
UILabel.appearancewhen containedInstancesofClass([UITableViewHeaderFooterView.self]).textColor=UIColor.whiteColor()
我更喜欢这个解决方案,因为如果你只想更改背景颜色或文本颜色,你不必担心“重建”标题视图。如果您使用
setTextColor
,它在iOS 7中也可以工作。但是,如果您想自定义视图而不仅仅是交换一些颜色,那么使用一个全新的视图——正如公认的答案所建议的那样——可能是最好的方式。是的,除非您需要按默认情况显示分区标题(即使第一个分区单元格在屏幕外,也固定在顶部)。这也会破坏可访问性,由于节标题不再可识别。当我的节的文本长达几行时,会出现此问题:视图的高度不会相应调整。你知道如何轻松解决这个问题吗?这是目前为止最简单的方法。荣誉