Quelqu'un peut-il s'il vous plaît me renseigner sur la manière la plus simple de modifier la taille de police du texte dans un en-tête de section UITableView?
J'ai les titres de section implémentés en utilisant la méthode suivante:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
Ensuite, je comprends comment modifier avec succès la hauteur de l'en-tête de section à l'aide de cette méthode:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
J'ai les cellules UITableView remplies à l'aide de cette méthode:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Cependant, je ne sais pas comment augmenter la taille de la police - ou d'ailleurs le style de police - du texte de l'en-tête de section?
Quelqu'un peut-il s'il vous plaît aider? Merci.
Réponses:
Malheureusement, vous devrez peut-être ignorer ceci:
En Objective-C:
Dans Swift:
Essayez quelque chose comme ceci:
En Objective-C:
Dans Swift:
la source
tableView:heightForHeaderInSection:
lesquels peuvent être encombrants.Une autre façon de procéder serait de répondre à la
UITableViewDelegate
méthodewillDisplayHeaderView
. La vue transmise est en fait une instance d'un fichierUITableViewHeaderFooterView
.L'exemple ci-dessous modifie la police et centre également le texte du titre verticalement et horizontalement dans la cellule. Notez que vous devez également répondre à
heightForHeaderInSection
pour que toute modification de la hauteur de votre en-tête soit prise en compte dans la disposition de la vue tableau. (Autrement dit, si vous décidez de modifier la hauteur de l'en-tête dans cettewillDisplayHeaderView
méthode.)Vous pouvez alors répondre à la
titleForHeaderInSection
méthode pour réutiliser cet en-tête configuré avec différents titres de section.Objectif c
Swift 1.2
(Remarque: si votre contrôleur de vue est un descendant de a
UITableViewController
, cela devra être déclaré commeoverride func
.)Swift 3.0
Ce code garantit également que l'application ne plante pas si votre vue d'en-tête est autre chose qu'un UITableViewHeaderFooterView:
la source
header.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
et / ouheader.detailTextLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
avec les autres étapes nécessaires (voir ici: captechconsulting.com/blog/john-szumski/… )Bien que la réponse de mosca1337 soit une solution correcte, soyez prudent avec cette méthode. Pour un en-tête avec du texte de plus d'une ligne, vous devrez effectuer les calculs de la hauteur de l'en-tête dans
tableView:heightForHeaderInSection:
lesquels peuvent être encombrants.Une méthode très préférée consiste à utiliser l'API d'apparence:
Cela changera la police, tout en laissant la table pour gérer les hauteurs elle-même.
Pour des résultats optimaux, sous-classez la vue de table et ajoutez-la à la chaîne de confinement (in
appearanceWhenContainedIn:
) pour vous assurer que la police n'est modifiée que pour les vues de table spécifiques.la source
- tableView:viewForHeaderInSection:
droite? Dans ce cas, la police peut être définie ici. C'est de toute façon ce que fait la solution de @ mosca1337.UILabel.appearance(whenContainedInInstancesOf: [UITableViewHeaderFooterView.self]).font = UIFont.boldSystemFont(ofSize: 28)
Pour iOS 7, j'utilise ceci,
Voici la version Swift 3.0 avec redimensionnement de l'en-tête
la source
Swift 3:
Le moyen le plus simple d'ajuster uniquement la taille:
la source
Swift 2.0 :
Implémentez viewForHeaderInSection, comme ceci:
Implémentez willDisplayHeaderView, comme ceci:
N'oubliez pas: si vous utilisez des cellules statiques, le premier en-tête de section est rempli plus haut que les autres en-têtes de section en raison du haut de UITableView; pour résoudre ce problème:
Implémentez heightForHeaderInSection, comme ceci:
la source
La réponse de la version Swift 4 de Leo Natan est
Si vous souhaitez définir une police personnalisée, vous pouvez utiliser
la source
Avec cette méthode, vous pouvez également définir la taille de la police, le style de police et l'arrière-plan de l'en-tête . il existe 2 méthodes pour cela
Première méthode
Deuxième méthode
la source
Swift 2:
Comme OP l'a demandé, ajustez uniquement la taille, ne la définissez pas comme une police système en gras ou autre:
la source
C'est ma solution avec Swift 5.
Pour contrôler entièrement la vue en coupe de l'en-tête, vous devez utiliser la méthode tableView (: viewForHeaderInsection: :) dans votre contrôleur, comme l'a montré l'article précédent. Cependant, il y a une étape supplémentaire: pour améliorer les performances, Apple recommande de ne pas générer une nouvelle vue à chaque fois mais de réutiliser la vue d'en-tête, tout comme réutiliser la cellule du tableau. C'est par la méthode tableView.dequeueReusableHeaderFooterView (withIdentifier:). Mais le problème que j'ai eu est qu'une fois que vous commencez à utiliser cette fonction de réutilisation, la police ne fonctionnera pas comme prévu. D'autres choses comme la couleur, l'alignement sont très bien mais juste la police. Il y a quelques discussions mais je l'ai fait fonctionner comme suit.
Le problème est que tableView.dequeueReusableHeaderFooterView (withIdentifier :) n'est pas comme tableView.dequeneReuseCell (:) qui renvoie toujours une cellule. Le premier retournera un zéro si personne n'est disponible. Même s'il renvoie une vue d'en-tête de réutilisation, il ne s'agit pas de votre type de classe d'origine, mais d'un UITableHeaderFooterView. Vous devez donc faire le jugement et agir selon votre propre code. En gros, s'il est nul, obtenez une toute nouvelle vue d'en-tête. Sinon, forcez à lancer pour que vous puissiez contrôler.
la source