Alguém pode me instruir sobre a maneira mais fácil de alterar o tamanho da fonte do texto em um cabeçalho da seção UITableView?
Eu tenho os títulos das seções implementados usando o seguinte método:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
Então, eu entendo como alterar com êxito a altura do cabeçalho da seção usando este método:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
Eu tenho as células UITableView preenchidas usando este método:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
No entanto, estou empolgado em saber como realmente aumentar o tamanho da fonte - ou, nesse caso, o estilo da fonte - do texto do cabeçalho da seção?
Alguém pode ajudar? Obrigado.
Respostas:
Infelizmente, talvez você precise substituir isso:
No Objetivo-C:
Em Swift:
Tente algo como isto:
No Objetivo-C:
Em Swift:
fonte
tableView:heightForHeaderInSection:
que pode ser complicado.Outra maneira de fazer isso seria responder ao
UITableViewDelegate
métodowillDisplayHeaderView
. A visão passada é na verdade uma instância de aUITableViewHeaderFooterView
.O exemplo abaixo altera a fonte e também centraliza o texto do título na vertical e na horizontal na célula. Observe que você também deve responder para
heightForHeaderInSection
que as alterações na altura do cabeçalho sejam contabilizadas no layout da exibição da tabela. (Ou seja, se você decidir alterar a altura do cabeçalho nestewillDisplayHeaderView
método.)Você pode responder ao
titleForHeaderInSection
método para reutilizar esse cabeçalho configurado com diferentes títulos de seção.Objetivo-C
Swift 1.2
(Nota: se o seu controlador de exibição é descendente de a
UITableViewController
, isso precisaria ser declarado comooverride func
.)Swift 3.0
Esse código também garante que o aplicativo não trava se a visualização do cabeçalho for algo diferente de um UITableViewHeaderFooterView:
fonte
header.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
e / ouheader.detailTextLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
juntamente com os outros passos necessários (ver aqui: captechconsulting.com/blog/john-szumski/... )Embora a resposta de mosca1337 seja uma solução correta, tenha cuidado com esse método. Para um cabeçalho com texto com mais de uma linha, você terá que executar os cálculos da altura do cabeçalho em
tableView:heightForHeaderInSection:
que pode ser complicado.Um método muito preferido é usar a API de aparência:
Isso mudará a fonte, enquanto ainda sai da tabela para gerenciar as alturas em si.
Para obter melhores resultados, subclasse a visualização de tabela e adicione-a à cadeia de contenção (pol
appearanceWhenContainedIn:
) para garantir que a fonte seja alterada apenas para as visualizações de tabela específicas.fonte
- tableView:viewForHeaderInSection:
direita? Nesse caso, a fonte pode ser definida ali. É isso que a solução da @ mosca1337 faz de qualquer maneira.UILabel.appearance(whenContainedInInstancesOf: [UITableViewHeaderFooterView.self]).font = UIFont.boldSystemFont(ofSize: 28)
Para o iOS 7, eu uso isso,
Aqui está a versão Swift 3.0 com redimensionamento de cabeçalho
fonte
Swift 3:
Maneira mais simples de ajustar apenas o tamanho:
fonte
Swift 2.0 :
Implemente viewForHeaderInSection, da seguinte maneira:
Implemente o willDisplayHeaderView, da seguinte maneira:
Lembre-se: se você estiver usando células estáticas, o primeiro cabeçalho da seção será mais alto que os demais, devido à parte superior do UITableView; para corrigir isso:
Implemente heightForHeaderInSection, da seguinte maneira:
fonte
A versão Swift 4 da resposta de Leo Natan é
Se você quiser definir uma fonte personalizada, poderá usar
fonte
Com esse método, você também pode definir o tamanho da fonte, o estilo da fonte e o fundo do cabeçalho . existem dois métodos para isso
Primeiro método
Segundo método
fonte
Swift 2:
Conforme solicitado pelo OP, apenas ajuste o tamanho, não configurando-o como uma fonte em negrito do sistema ou o que for:
fonte
Esta é a minha solução com o Swift 5.
Para controlar totalmente a visualização da seção do cabeçalho, você precisa usar o método tableView (: viewForHeaderInsection: :) no seu controlador, como mostrou a postagem anterior. No entanto, há uma etapa adicional: para melhorar o desempenho, a Apple recomenda não gerar uma nova visualização sempre, mas reutilizar a visualização do cabeçalho, assim como reutilizar a célula da tabela. Isso é feito pelo método tableView.dequeueReusableHeaderFooterView (withIdentifier:). Mas o problema que tive foi quando você começou a usar essa função de reutilização, a fonte não funcionará conforme o esperado. Outras coisas como cor, alinhamento, tudo bem, mas apenas fonte. Existem algumas discussões, mas eu fiz funcionar da seguinte maneira.
O problema é tableView.dequeueReusableHeaderFooterView (withIdentifier :) não é como tableView.dequeneReuseCell (:), que sempre retorna uma célula. O primeiro retornará um valor zero se não houver ninguém disponível. Mesmo que ele retorne uma exibição de cabeçalho de reutilização, não é o tipo de classe original, mas um UITableHeaderFooterView. Então você precisa fazer o julgamento e agir de acordo com seu próprio código. Basicamente, se for nulo, obtenha uma nova exibição de cabeçalho. Se não for nulo, force a conjuração para poder controlar.
fonte