How to change text color for Section Headers in a Grouped TableView in iPhone SDK?

后端 未结 7 1464
情深已故
情深已故 2020-12-14 08:10

I am making an iPhone app where in I have a grouped TableView with headers for the sections.

Problem is that I want to change the Section Header\'s text color.

相关标签:
7条回答
  • 2020-12-14 08:51

    @Harsh 's answer worked great for me, and by changing the coordinations of UILabel you can move it around. Also, I, personally thought to change the shadow offset a bit to make it more readable, but that could be a personal choice. Here's my version in case:

    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section];
        if (sectionTitle == nil) {
            return nil;
        }
    
        // Create label with section title
        UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(40, -5, 300, 30)] autorelease];
        //If you add a bit to x and decrease y, it will be more in line with the tableView cell (that is in iPad and landscape)
        label.backgroundColor = [UIColor clearColor];
        label.textColor = [UIColor yellowColor];
        label.shadowColor = [UIColor whiteColor];
        label.shadowOffset = CGSizeMake(0.5., 0.5.);
        label.font = [UIFont boldSystemFontOfSize:18];
        label.text = sectionTitle;
    
        // Create header view and add label as a subview
        UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, SectionHeaderHeight)]autorelease];
        [view addSubview:label];
    
        return view;
    }
    
    0 讨论(0)
  • 2020-12-14 08:52

    If you don't want to do it app wide like in Vahan's solution, here is a solution using one of UITableViewDelegate's method :

    func tableView(tableView: UITableView, willDisplayHeaderView view:UIView, forSection: Int) {
        if let headerView = view as? UITableViewHeaderFooterView {
           headerView.textLabel?.textColor = UIColor.redColor() 
        }
    }
    
    0 讨论(0)
  • 2020-12-14 08:57

    I built off of the answer from @Harsh.

    This is the closest I could get, indistinguishable from what I can tell.

    It goes in the <UITableViewDataSource> obviously.

    - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
    {
        UIView *hView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
        hView.backgroundColor=[UIColor clearColor];
    
        UILabel *hLabel=[[[UILabel alloc] initWithFrame:CGRectMake(19,17,301,21)] autorelease];
    
        hLabel.backgroundColor=[UIColor clearColor];
        hLabel.shadowColor = [UIColor whiteColor];
        hLabel.shadowOffset = CGSizeMake(0.5,1);  // closest as far as I could tell
        hLabel.textColor = [UIColor blackColor];  // or whatever you want
        hLabel.font = [UIFont boldSystemFontOfSize:17];
        hLabel.text = @"Your title here";  // probably from array
    
        [hView addSubview:hLabel];
    
        return hView;
    }
    0 讨论(0)
  • 2020-12-14 08:59

    You can implement this table view data source method:

    - (UIView *)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
    {
       //create your custom label here & anything else you may want to add
       return YourCustomView;
    }
    
    0 讨论(0)
  • 2020-12-14 09:02

    This is SURELY gonna work for you.

    -(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;
    }
    

    just copy and paste this function in your code.

    0 讨论(0)
  • 2020-12-14 09:02

    Add the following code to your AppDelegate class in - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions method:

    [[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setTextColor:[UIColor whiteColor]];
    
    0 讨论(0)
提交回复
热议问题