¿Alguien puede indicarme la forma más fácil de cambiar el tamaño de fuente para el texto en un encabezado de sección UITableView?
Tengo los títulos de sección implementados usando el siguiente método:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
Entonces, entiendo cómo cambiar con éxito la altura del encabezado de sección usando este método:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
Tengo las celdas UITableView pobladas usando este método:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Sin embargo, estoy atascado en cuanto a cómo aumentar realmente el tamaño de fuente, o para el estilo de fuente, del texto del encabezado de sección.
¿Alguien puede ayudarme? Gracias.
Respuestas:
Desafortunadamente, es posible que deba anular esto:
En el objetivo-C:
En Swift:
Intenta algo como esto:
En el objetivo-C:
En Swift:
fuente
tableView:heightForHeaderInSection:
que puede ser engorroso.Otra forma de hacerlo sería responder al
UITableViewDelegate
métodowillDisplayHeaderView
. La vista aprobada es en realidad una instancia de aUITableViewHeaderFooterView
.El siguiente ejemplo cambia la fuente y también centra el texto del título vertical y horizontalmente dentro de la celda. Tenga en cuenta que también debe responder para
heightForHeaderInSection
que se tengan en cuenta los cambios en la altura de su encabezado en el diseño de la vista de tabla. (Es decir, si decide cambiar la altura del encabezado en estewillDisplayHeaderView
método).Luego, podría responder al
titleForHeaderInSection
método para reutilizar este encabezado configurado con diferentes títulos de sección.C objetivo
Swift 1.2
(Nota: si su controlador de vista es descendiente de a
UITableViewController
, esto debería declararse comooverride func
).Swift 3.0
Este código también garantiza que la aplicación no se bloquee si su vista de encabezado no es un UITableViewHeaderFooterView:
fuente
header.textLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
y / oheader.detailTextLabel.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];
junto con los otros pasos necesarios (consulte aquí: captechconsulting.com/blog/john-szumski/… )Si bien la respuesta de mosca1337 es una solución correcta, tenga cuidado con ese método. Para un encabezado con texto de más de una línea, deberá realizar los cálculos de la altura del encabezado en los
tableView:heightForHeaderInSection:
que puede ser engorroso.Un método muy preferido es usar la API de apariencia:
Esto cambiará la fuente, sin dejar la tabla para administrar las alturas.
Para obtener resultados óptimos, subclasifique la vista de tabla y agréguelo a la cadena de contención (in
appearanceWhenContainedIn:
) para asegurarse de que la fuente solo se cambie para las vistas de tabla específicas.fuente
- tableView:viewForHeaderInSection:
derecha? En cuyo caso, la fuente se puede configurar allí mismo. Esto es lo que la solución de @ mosca1337 hace de todos modos.UILabel.appearance(whenContainedInInstancesOf: [UITableViewHeaderFooterView.self]).font = UIFont.boldSystemFont(ofSize: 28)
Para iOS 7 uso esto,
Aquí está la versión Swift 3.0 con cambio de tamaño del encabezado
fuente
Swift 3:
La forma más sencilla de ajustar solo el tamaño:
fuente
Swift 2.0 :
Implemente viewForHeaderInSection, así:
Implemente willDisplayHeaderView, así:
Recuerde: si usa celdas estáticas, el primer encabezado de sección se rellena más alto que otros encabezados de sección debido a la parte superior de UITableView; para arreglar esto:
Implemente heightForHeaderInSection, así:
fuente
La respuesta de Swift 4 de Leo Natan es:
Si desea establecer una fuente personalizada, puede usar
fuente
Con este método, también puede establecer el tamaño de fuente, el estilo de fuente y el fondo del encabezado . Hay 2 métodos para esto
Primer método
Segundo método
fuente
Swift 2:
Como OP solicitó, solo ajuste el tamaño, no configurándolo como una fuente en negrita del sistema o lo que sea:
fuente
Esta es mi solución con swift 5.
Para controlar completamente la vista de la sección del encabezado, debe usar el método tableView (: viewForHeaderInsection: :) en su controlador, como lo mostró la publicación anterior. Sin embargo, hay un paso más: para mejorar el rendimiento, Apple recomienda no generar una nueva vista cada vez, sino reutilizar la vista de encabezado, al igual que reutilizar la celda de la tabla. Esto es por el método tableView.dequeueReusableHeaderFooterView (withIdentifier:). Pero el problema que tuve es que una vez que comience a usar esta función de reutilización, la fuente no funcionará como se esperaba. Otras cosas como el color, la alineación todo bien pero solo la fuente. Hay algunas discusiones, pero lo hice funcionar de la siguiente manera.
El problema es tableView.dequeueReusableHeaderFooterView (withIdentifier :) no es como tableView.dequeneReuseCell (:) que siempre devuelve una celda. El primero devolverá un cero si no hay nadie disponible. Incluso si devuelve una vista de encabezado de reutilización, no es su tipo de clase original, sino un UITableHeaderFooterView. Por lo tanto, debe juzgar y actuar de acuerdo con su propio código. Básicamente, si es nulo, obtenga una nueva vista de encabezado. Si no es nulo, fuerza a lanzar para que puedas controlar.
fuente