45 votes

Comment changer la couleur de la police du titre en type groupé UITableView?

J'ai une table groupée de type groupée et elle a l'air plutôt cool.

Mais, si je change la couleur d'arrière-plan du tableau en noir, les titres deviennent flous.

Est-il possible de changer la couleur de la police et ses styles? Pour que je puisse le rendre plus lisible. Dois-je implémenter la méthode tableView:viewForHeaderInSection: ?

43voto

adp Points 865

Pour utiliser les coordonnées par défaut et les sections dans TableView, avec une police et une ombre de couleur blanche:

 -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section];
    if (sectionTitle == nil) {
        return nil;
    }

    UILabel *label = [[UILabel alloc] init];
    label.frame = CGRectMake(20, 8, 320, 20);
    label.backgroundColor = [UIColor clearColor];
    label.textColor = [UIColor whiteColor];
    label.shadowColor = [UIColor grayColor];
    label.shadowOffset = CGSizeMake(-1.0, 1.0);
    label.font = [UIFont boldSystemFontOfSize:16];
    label.text = sectionTitle;

    UIView *view = [[UIView alloc] init];
    [view addSubview:label];

    return view;
}
 

21voto

Confused Points 851

Oui ... ça marche très bien maintenant!

J'ai créé la méthode tableView:viewForHeaderInSection: et créé une UIView

 UIView *customTitleView = [ [UIView alloc] initWithFrame:CGRectMake(10, 0, 300, 44)];
 

Ensuite, j'ai créé un UILabel et défini les valeurs de texte et les couleurs sur l'étiquette. Ensuite, j'ai ajouté l'étiquette à la vue

     UILabel *titleLabel = [ [UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 44)];

    titleLabel.text = @"<Title string here>";

    titleLabel.textColor = [UIColor whiteColor];

    titleLabel.backgroundColor = [UIColor clearColor];

    [customTitleView addSubview:titleLabel];
 

Donc ma méthode tableView:viewForHeaderInSection: ressemble à ...

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

    UIView *customTitleView = [ [UIView alloc] initWithFrame:CGRectMake(10, 0, 300, 44)];

    UILabel *titleLabel = [ [UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 44)];

    titleLabel.text = @"<Title string here>";

    titleLabel.textColor = [UIColor whiteColor];

    titleLabel.backgroundColor = [UIColor clearColor];

    [customTitleView addSubview:titleLabel];

    return customTitleView;

}
 

Nous devons ajouter la méthode tableView:heightForHeaderInSection: pour fournir de l'espace au titre.

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

1voto

Jhaliya Points 24039

À partir de la documentation d'apple

La vue de la table utilise une police fixe de style pour la section d'en-tête de titres. Si vous voulez un style de police différent, de retour d'un affichage personnalisé (par exemple, un UILabel objet) dans la méthode du délégué tableView:viewForHeaderInSection: à la place.

Il faut donc utiliser la méthode ci-dessous et le retourner à votre vue personnalisée (UILabel) avec votre choix de police.

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

Lire à partir de la documentation d'apple

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X