简体   繁体   English

如何更改UITableView节颜色和文本颜色

[英]How to change UITableView Section color and Text color

I have UITableView which populates dates from the plist and Even Section's Title is been populated from plist in UITableView .it gives me the default blue section color and White text color.like this... 我有UITableView从plist填充日期和Even Section的标题已经从UITableView plist填充。它给我默认的blue部分颜色和White文本颜色。像这样......

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {


NSString *key = nil;
if ([tableView isEqual:self.searchDisplayController.searchResultsTableView])
{
    key = [self.searchResults objectAtIndex:section];
}
else{
    key = [self.mySections objectAtIndex:section];
}

//    NSString *key = [self.mySections objectAtIndex:section];
return [NSString stringWithFormat:@"%@", key];

 }

. Now I need to change this default text color and Section's color, to do that I am implementing code shown below.But it gives me its own UIView . 现在我需要更改此默认文本颜色和Section的颜色,为此我实现下面显示的代码。但它给了我自己的UIView

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *tempView=[[UIView alloc]initWithFrame:CGRectMake(0,200,300,244)];
    tempView.backgroundColor=[UIColor clearColor];

    UILabel *tempLabel=[[UILabel alloc]initWithFrame:CGRectMake(15,0,300,44)];
    tempLabel.backgroundColor=[UIColor clearColor]; 
    tempLabel.shadowColor = [UIColor blackColor];
    tempLabel.shadowOffset = CGSizeMake(0,2);
    tempLabel.textColor = [UIColor redColor]; //here you can change the text color of header.
    tempLabel.font = [UIFont fontWithName:@"Helvetica" size:fontSizeForHeaders];
    tempLabel.font = [UIFont boldSystemFontOfSize:fontSizeForHeaders];
        tempLabel.text=@"Header Text";

    [tempView addSubview:tempLabel];

    [tempLabel release];
    return tempView;
}

To best customize the look of a table section header, you really need to implement two methods: the first one you already have, and it should work, albeit the results won't be very usable. 为了最好地自定义表部分标题的外观,你真的需要实现两个方法:你已经拥有的第一个方法,它应该可以工作,尽管结果不是很有用。

The second method is the tableView:heightForHeaderInSection: , which tells the UITableView what's the height of the new section, and it can be as simple as this: 第二种方法是tableView:heightForHeaderInSection: ,它告诉UITableView新部分的高度是什么,它可以像这样简单:

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

EDIT: As per the comment, here's the result of your code and defining the header height: 编辑:根据评论,这是您的代码和定义标题高度的结果:

最终标题标签看

EDIT 2: If you want red text with a black background, change your code for tableView:viewForHeaderInSection: like this: 编辑2:如果你想要带有黑色背景的红色文本,请更改tableView:viewForHeaderInSection:的代码tableView:viewForHeaderInSection:像这样:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *tempView=[[UIView alloc]initWithFrame:CGRectMake(0,200,300,244)];
    tempView.backgroundColor=[UIColor blackColor];

    UILabel *tempLabel=[[UILabel alloc]initWithFrame:CGRectMake(15,0,300,44)];
    tempLabel.backgroundColor=[UIColor clearColor]; 
    tempLabel.textColor = [UIColor redColor]; //here you can change the text color of header.
    tempLabel.font = [UIFont fontWithName:@"Helvetica" size:fontSizeForHeaders];
    tempLabel.font = [UIFont boldSystemFontOfSize:fontSizeForHeaders];
        tempLabel.text=@"Header Text";

    [tempView addSubview:tempLabel];

    [tempLabel release];
    return tempView;
}

EDIT 3: Ok, so I'll try to merge your code from the first method with the second one. 编辑3:好的,所以我会尝试将第一种方法的代码与第二种方法合并。 It will look like this: 它看起来像这样:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *tempView=[[UIView alloc]initWithFrame:CGRectMake(0,200,300,244)];
    tempView.backgroundColor=[UIColor blackColor];

    UILabel *tempLabel=[[UILabel alloc]initWithFrame:CGRectMake(15,0,300,44)];
    tempLabel.backgroundColor=[UIColor clearColor]; 
    tempLabel.textColor = [UIColor redColor]; //here you can change the text color of header.
    tempLabel.font = [UIFont fontWithName:@"Helvetica" size:fontSizeForHeaders];
    tempLabel.font = [UIFont boldSystemFontOfSize:fontSizeForHeaders];

    NSString *key = nil;
    if ([tableView isEqual:self.searchDisplayController.searchResultsTableView])
    {
        key = [self.searchResults objectAtIndex:section];
    }
    else{
        key = [self.mySections objectAtIndex:section];
    }

    tempLabel.text=[NSString stringWithFormat:@"%@", key];
    [tempView addSubview:tempLabel];

    [tempLabel release];
    return tempView;
}

This should return a table view section header with the proper label and proper look. 这应该返回一个具有正确标签和正确外观的表视图节标题。

EDIT 4: Just a note on how all of this works: if you use tableView:viewForHeaderInSection: whatever code you put in tableView:titleForHeaderInSection: will be ignored . 编辑4:只是关于所有这些如何工作的说明:如果你使用tableView:viewForHeaderInSection:你在tableView:titleForHeaderInSection:放置的代码tableView:titleForHeaderInSection: 将被忽略 So you need to do the whole setup of the section header, including the proper text in the tableView:viewForHeaderInSection method. 因此,您需要对section header进行整个设置,包括tableView:viewForHeaderInSection方法中的正确文本。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM