Multilínea usando el estilo UITableViewCell UITableViewCellStyleValue2
-
19-09-2019 - |
Pregunta
Estoy tratando de encontrar la manera de replicar el estilo UITableViewCellStyleValue2 de modo que el texto de detalle puede ser múltiples líneas - como se ve en las células 'Dirección' en la aplicación Contactos. Al igual que la aplicación Contactos, algunos de los campos (como el nombre de la calle) son opcionales; por lo que mostraría decir 3 líneas en lugar de 4, si la calle no era nula.
Me estoy perdiendo un truco, o tengo que crear una célula costumbre en IB? ¿Cómo asegurar el texto y detalle las etiquetas de texto alineación con otras células UITableViewCellStyleValue2?
Gracias por cualquier consejo.
Solución
Otra ronda de buscar encontrado esto:
http: // el-perdido- beauty.blogspot.com/2009/11/multi-line-uitableviewcell-using.html
tratado rápidamente, y funciona -. Sólo tiene que ajustar el tamaño de la fuente un poco
Otros consejos
Me suena como usted tendrá que crear una costumbre UITableCell. La única manera de asegurar las líneas de texto arriba es conseguir el margen / texto valores de anchura correcta, que se puede hacer a través de ensayo y error, o el uso de una herramienta de medición tales como xScope .
Crea una célula de medida para usted mesa y colocar una UILabel y una UITextView su interior. Coloque la etiqueta y el texto a fin de que coincida con sus posiciones X, Y a las otras células que está utilizando en ese cuadro. Insertar "\ n" en el texto de la TextView donde quieras saltos de línea que se produzca. Cambiar el tamaño de la altura TextView en función del número de líneas en la Vista de Texto utilizando algo como:
CGRect frame = yourTextView.frame;
frame.size.height = yourTextView.contentSize.height;
yourTextView.frame = frame;
return frame.size.height + 20.0; // Pad the cell's height as necessary for your applicaion
También tenía el problema de que el textLabel
y la detailTextLabel
tenían una posición diferente. Solución: Para el detailTextLabel
utilizar la misma altura como el textLabel (por ejemplo 13)