不同颜色的部分标题背景

时间:2015-06-08 09:18:44

标签: ios uitableview uicolor

我的tableView中有三个部分。我试图为每个节标题设置不同的背景颜色。这是我发现设置剖面颜色的例子,但我还没有找到设置不同颜色的方法,这可能吗?

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

    // Text Color
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
    [header.textLabel setTextColor:[UIColor whiteColor]];

    // Another way to set the background color
    // Note: does not preserve gradient effect of original header
    // header.contentView.backgroundColor = [UIColor blackColor];
}

3 个答案:

答案 0 :(得分:0)

你可以试试这个:

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
    static NSArray *backgroundColors;
    static NSArray *titleColors;

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        backgroundColors = @[[UIColor blackColor], [UIColor redColor]];
        titleColors = @[[UIColor blackColor], [UIColor redColor]];
    });

    // Background color
    view.tintColor = backgroundColors[section];

    // Text Color
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
    [header.textLabel setTextColor:titleColors[section]];

    // header.contentView.backgroundColor = colors[section];
}

答案 1 :(得分:0)

你可以用这种方式设置不同的背景颜色。

根据标题标题和颜色进行调整

以下是我的示例: -

-(void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
UITableViewHeaderFooterView * headerview = (UITableViewHeaderFooterView *)view;
if (section==0)
{
headerview.contentView.backgroundColor = [UIColor colorWithRed:0.90 green:0.60 blue:0.00 alpha:1.0];
headerview.textLabel.textColor = [UIColor whiteColor];
}
if (section==1) {
    headerview.contentView.backgroundColor = [UIColor colorWithRed:0.50 green:0.0 blue:0.20 alpha:1.0];
    headerview.textLabel.textColor = [UIColor whiteColor];
}

}

修改:

要将节设置为空,您需要创建节的数组。 例如: -

    secnm=[[NSArray alloc]initWithObjects:@"",@"Friends", nil];
// Declaration of section array(set section according to your need)
  

您需要设置""以使空白部分表示没有标题。   然后根据您的要求设置12部分的颜色

 -(void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
UITableViewHeaderFooterView * headerview = (UITableViewHeaderFooterView *)view;
 if (section==1) (set index according to your section)
{
    headerview.contentView.backgroundColor = [UIColor colorWithRed:0.90 green:0.60 blue:0.00 alpha:1.0];
    headerview.textLabel.textColor = [UIColor whiteColor];
 }

 }

结果: -

Section without header and with header

答案 2 :(得分:0)

您可以为3个部分定义颜色数组,例如

NSArray *headerColors=@[[UIColor greenColor],[UIColor yellowColor],[UIColor redColor]];

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    // Background color
    view.tintColor = [headerColors objectAtIndex:section];

    // Text Color
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
    [header.textLabel setTextColor:[UIColor whiteColor]];

    // Another way to set the background color
    // Note: does not preserve gradient effect of original header
    // header.contentView.backgroundColor = [UIColor blackColor];
}