Esto está en iPhone 0S 2.0. Las respuestas para 2.1 también están bien, aunque no conozco ninguna diferencia con respecto a las tablas.
Parece que debería ser posible hacer que el texto se ajuste sin crear una celda personalizada, ya que a UITableViewCell
contiene un UILabel
valor predeterminado. Sé que puedo hacer que funcione si creo una celda personalizada, pero eso no es lo que estoy tratando de lograr: quiero entender por qué mi enfoque actual no funciona.
He descubierto que la etiqueta se crea a pedido (ya que la celda admite el acceso de texto e imagen, por lo que no crea la vista de datos hasta que sea necesario), así que si hago algo como esto:
cell.text = @""; // create the label
UILabel* label = (UILabel*)[[cell.contentView subviews] objectAtIndex:0];
entonces obtengo una etiqueta válida, pero configurar numberOfLines
eso (y lineBreakMode) no funciona, todavía recibo texto de una sola línea. Hay mucha altura en el UILabel
texto para mostrar; solo estoy devolviendo un valor grande para la altura heightForRowAtIndexPath
.
fuente
La respuesta de Tim Rupe actualizada para iOS7:
fuente
Un breve comentario / respuesta para registrar mi experiencia cuando tuve el mismo problema. A pesar de usar los ejemplos de código, la altura de la celda de la vista de tabla se estaba ajustando, pero la etiqueta dentro de la celda todavía no se ajustaba correctamente; la solución fue que estaba cargando mi celda desde un archivo NIB personalizado, lo que sucede después de que la altura de la celda se ajusta.
Y tenía mi configuración dentro del archivo NIB para no ajustar el texto, y solo tengo 1 línea para la etiqueta; la configuración del archivo NIB anulaba la configuración que ajusté dentro del código.
La lección que tomé fue asegurarme de tener siempre en cuenta cuál es el estado de los objetos en cada momento, ¡es posible que aún no se hayan creado! ... hth alguien en el futuro.
fuente
Si vamos a agregar solo texto en la
UITableView
celda, solo necesitamos dos delegados para trabajar (no es necesario agregar másUILabels
)1)
cellForRowAtIndexPath
2)
heightForRowAtIndexPath
Esta solución funcionó para mí: -
Aquí la cadena
mutArr
es una matriz mutable de la que obtengo mis datos.EDITAR: - Aquí está la matriz que tomé.
fuente
Ahora las vistas de tabla pueden tener celdas de tamaño propio. Configure la vista de tabla de la siguiente manera
tableView.estimatedRowHeight = 85.0 //use an appropriate estimate tableView.rowHeight = UITableViewAutomaticDimension
Referencia de Apple
fuente
Yo uso las siguientes soluciones.
Los datos se proporcionan por separado en un miembro:
El manejo se puede hacer fácilmente
cellForRowAtIndexPath
. Defina la celda / defina la fuente y asigne estos valores al resultado "celda". Tenga en cuenta quenumberoflines
se establece en "0", lo que significa tomar lo que se necesita.En
heightForRowAtIndexPath
, calculo las alturas del texto envuelto. El tamaño del cuerpo estará relacionado con el ancho de su celda. Para iPad será 1024. Para iPhone en iPod 320.fuente
Encontré que esto es bastante simple y directo:
por ejemplo:
Este puede o no ser el mejor enfoque estándar para hacerlo, pero funcionó en mi caso.
fuente
Prueba mi código rápidamente. Este código también funcionará para UILabels normales.
Ahora llama simplemente así
fuente
Creo que esta es una solución mejor y más corta. Simplemente formatee el
UILabel
(textLabel
) de la celda para calcular automáticamente la altura especificandosizeToFit
y todo debería estar bien.fuente
No creo que puedas manipular una base
UITableViewCell's
privadaUILabel
para hacer esto. Se podría añadir un nuevoUILabel
a la celda de uno mismo y utilizarnumberOfLines
consizeToFit
el tamaño de manera apropiada. Algo como:fuente