我的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];
}
答案 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)
您需要设置
""
以使空白部分表示没有标题。 然后根据您的要求设置1
或2
部分的颜色
-(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];
}
}
结果: -
答案 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];
}