web-dev-qa-db-fra.com

Existe-t-il un moyen de définir la couleur de l'en-tête de la section UITableView dans iOS 7 directement plutôt que de créer un nouveau UIView?

Les en-têtes de section de UITableView sont moins identifiables dans iOS 7. Existe-t-il un moyen de définir la couleur de l'en-tête de la section UITableView dans iOS 7 plutôt que de créer un nouveau UIView?.

enter image description here

Note: J'ai trouvé des solutions en créant une nouvelle UIView dans,

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

mais je voulais vraiment garder les propriétés de la pomme sauf la couleur. Existe-t-il un moyen de le faire sans cette méthode?.

17
Goppinath

Implémentez tableView:willDisplayHeaderView:forSection: et mettez à jour la vue qui vous a été transmise.

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    UITableViewHeaderFooterView *v = (UITableViewHeaderFooterView *)view;
    v.backgroundView.backgroundColor = [UIColor darkGrayColor];
}

(en supposant que vous ayez fourni une instance UITableViewHeaderFooterView dans votre implémentation pour tableView:viewForHeaderInSection:)

52
Wain

Dans le cas de Swift 3, le moyen consiste à le réaliser via la méthode UITableViewDelegate:

override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    if let headerView = view as? UITableViewHeaderFooterView  {
        headerView.backgroundColor = UIColor.gray
    }
}
2

Avec cette méthode, vous pouvez définir la taille de la police, le style de police et l’arrière-plan de l’en-tête aussi.

Il y a 2 méthodes pour cela:

Première méthode

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section{
        UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
        header.backgroundView.backgroundColor = [UIColor darkGrayColor];
        header.textLabel.font=[UIFont fontWithName:@"Open Sans-Regular" size:12];
        [header.textLabel setTextColor:[UIColor whiteColor]];
    }

Deuxième méthode  

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 30)];
//    myLabel.frame = CGRectMake(20, 8, 320, 20);
    myLabel.font = [UIFont fontWithName:@"Open Sans-Regular" size:12];
    myLabel.text = [NSString stringWithFormat:@"   %@",[self tableView:FilterSearchTable titleForHeaderInSection:section]];

    myLabel.backgroundColor=[UIColor blueColor];
    myLabel.textColor=[UIColor whiteColor];
    UIView *headerView = [[UIView alloc] init];
    [headerView addSubview:myLabel];
    return headerView;
}
0
Anup Gupta