[英]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.