如何在UITableView中更改基于索引的部分常用颜色

时间:2014-01-30 10:27:37

标签: ios objective-c uitableview

通常我的屏幕显示如下:

enter image description here

当我使用此代码时

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];

    [headerView setBackgroundColor:[UIColor whiteColor]];

    return headerView;
}

我的输出是这样的:

enter image description here

我的部分索引文字不可见。我知道节标题视图添加了我的自定义视图。我想更改节标题颜色并显示索引文本。

@Khawar回答我得到了这个输出

enter image description here

3 个答案:

答案 0 :(得分:1)

尝试设置UITableView标题的高度。

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return 30.0;
}

如果您只需要在显示部分标题时更改部分标题的背景颜色,则无需为此创建自定义视图。自定义视图将覆盖您的默认标题,并且您的标题不会显示,除非您在自定义视图中添加自定义UILabel。只需使用以下UITableView委托来更改背景颜色。

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
    view.tintColor = [UIColor redColor];
}

查看之前和之后的结果。

<强> ----------------之前------------------

enter image description here

<强> ----------------后------------------

enter image description here

希望这可以解决问题。

答案 1 :(得分:1)

这是100%工作,您可以更改索引或标题文本颜色

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    view.tintColor = [UIColor blueColor];

    // if you have index/header text in your tableview change your index text color 
    UITableViewHeaderFooterView *headerIndexText = (UITableViewHeaderFooterView *)view;
    [headerIndexText.textLabel setTextColor:[UIColor blackColor]];

}

输出:

enter image description here

答案 2 :(得分:0)

您必须为部分提供标题...或者您可以使用此方法..

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UILabel *headerView = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 30)];
   [headerView setBackgroundColor:[UIColor colorWithWhite:0 alpha:0.5]];
    headerView.text = [self tableView:tableView titleForHeaderInSection:section];
    return headerView;
}