Modifier La Taille De Police Pour UITableView En-Têtes De Section
Quelqu'un peut-il svp m'instruire sur la manière la plus facile de changer la taille de la police pour le texte dans un UITableView en-tête de section?
J'ai les titres de section mises en œuvre à l'aide de la méthode suivante:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
Alors, je comprends comment réussir à modifier l'en-tête de section de la hauteur à l'aide de cette méthode:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
J'ai la UITableView cellules remplis à l'aide de cette méthode:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Cependant, je suis coincé à savoir comment augmenter la taille de la police - ou, d'ailleurs, le style de la police de l'en-tête de section de texte?
Quelqu'un peut s'il vous plaît aider? Merci.
- Swift version
Vous devez vous connecter pour publier un commentaire.
Malheureusement, vous pourriez avoir à remplacer ce:
En Objective-C:
Dans Swift:
Essayer quelque chose comme cela:
En Objective-C:
Dans Swift:
tableView:heightForHeaderInSection:
qui peut être lourd.tableView:titleForHeaderInSection
ici. De substituer le point de vue de l'textLabel
propriété et retour myLabel. Le titre de la chaîne est assurée par letableView:titleForHeaderInSection
fonction dans leUITableViewDataSource
protocole. Il est alors attribué à l'en-tête de la vuetextLabel
.Une autre façon de le faire serait de répondre à la
UITableViewDelegate
méthodewillDisplayHeaderView
. La vue est en fait une instance d'unUITableViewHeaderFooterView
.L'exemple ci-dessous modifie la police, et aussi les centres le titre du texte verticalement et horizontalement à l'intérieur de la cellule. Notez que vous devez également répondre à
heightForHeaderInSection
avoir des changements à votre en-tête de la hauteur comptabilisés dans la mise en page de l'affichage de la table. (Qui est, si vous décidez de modifier l'en-tête de la hauteur dans cewillDisplayHeaderView
méthode.)Vous pouvez ensuite répondre à la
titleForHeaderInSection
méthode de réutiliser cette configuré en-tête avec les différents titres de section.Objective-C
Swift 1.2
(Note: si votre vue-contrôleur est un descendant d'une
UITableViewController
, cela devra être déclaré commeoverride func
.)Swift 3.0
Ce code s'assure également que l'application ne plante pas si votre vue d'en-tête est autre chose qu'un UITableViewHeaderFooterView:
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/...)if ([view isKindOfClass:[UITableViewHeaderFooterView class]]) { ... }
parce qu'il y a deux points de vue qui sont traitées. L'un est normal UIView (la vue est retourné à partir de viewForFooter) et l'autre est le UITableViewHeaderFooterView que nous avons l'intention de modifier. Lorsque vous essayez d'accéder à la textLabel de la UIView il va exception d'une défaillance de sélecteur. Ainsi, la nécessité pour la vérification de la vue qui est actuellement en cours de transmission.Tout mosca1337 réponse est une bonne solution, à être prudent avec cette méthode. Pour un en-tête avec le texte de plus d'une ligne, vous aurez à effectuer les calculs de la hauteur de l'en-tête dans
tableView:heightForHeaderInSection:
qui peut être lourd.Une bien meilleure méthode est d'utiliser l'aspect de l'API:
Cela va changer la police, tout en laissant de la table pour gérer les hauteurs de lui-même.
Pour des résultats optimaux, sous-classe de la vue de la table, et l'ajouter à la maîtrise de la chaîne (dans
appearanceWhenContainedIn:
) assurez-vous que la police est modifié uniquement pour les vues de table.UITableViewHeaderFooterView
et seulement définir l'apparence lorsqu'ils sont contenus dans la sous-classe. Je vais modifier la réponse.- tableView:viewForHeaderInSection:
droit? Auquel cas, la police peut être fixé à droite. C'est ce que @mosca1337 la solution n'est de toute façon.UITableViewHeaderFooterView
juste pour une police personnalisée.[UIFont fontWithName:@"AvenirNext-Medium" size:14]
setFont:
n'est pas destiné à être appelée sur un UILabel apparence proxy. Bien que UILabel hérite de UIView qui est conforme à laUIAppearanceContainer
protocole, la méthodesetFont:
n'est pas marqué avecUI_APPEARANCE_SELECTOR
et ne devrait donc pas être utilisé comme tel. Jetez un oeil à la fois les en-têtes deUIView
etUILabel
de voir que, par exemple,setBackgroundColor:
est marqué avecUI_APPEARANCE_SELECTOR
alors que d'autres méthodes ne le sont pas.UILabel.appearance(whenContainedInInstancesOf: [UITableViewHeaderFooterView.self]).font = UIFont.boldSystemFont(ofSize: 28)
Pour iOS 7-je utiliser ce,
Ici est Swift 3.0 version avec en-tête de redimensionnement
Swift 3:
Façon la plus simple de régler seulement taille:
Swift 2.0:
Mettre en œuvre viewForHeaderInSection, comme suit:
Mettre en œuvre willDisplayHeaderView, comme suit:
Rappelez-vous: Si vous êtes en utilisant des cellules statiques, la première section d'en-tête est rembourrée plus élevé que les autres en-têtes de section en raison de la haut de la UITableView; pour résoudre ce problème:
Mettre en œuvre heightForHeaderInSection, comme suit:
Avec cette méthode, vous pouvez définir taille de police, style de police et d'arrière-plan de l'en-Tête aussi.
il y a 2 méthode pour cette
Première Méthode
Deuxième Méthode
Swift 4 version de Leo Natan réponse est
Si vous souhaitez définir une police personnalisée vous pouvez utiliser
Swift 2:
Que l'OP a demandé, seulement ajuster la taille, ne pas le définir comme un système de police en gras ou quoi que ce soit: