Pregunta

He creado una UITableViewCell usando UITableViewCellStyleValue1, que la documentación de Apple definen como:

  

Un estilo para una célula con una etiqueta en el lado izquierdo de la celda con el texto alineado a la izquierda y negro; en el lado derecho hay una etiqueta que tiene menor texto azul y es alineado a la derecha. La aplicación Ajustes utiliza células en este estilo.

Estoy tratando de establecer el texto de la celda para mostrar un texto corto a la izquierda, y un poco de texto largo a la derecha, por ejemplo,

  

http://www.mylongurl.com/subdirectory/etc

Mi problema es que el UILabel la izquierda se trunca en lugar de la correcta por lo que se muestra como:

  

http://www.mylongurl.com/subdirectory/etc

Si hago la URL incluso más tiempo entonces tanto las etiquetas se truncan, por ejemplo,

  

http: //www.mylongurl.com...subdirectory/etc

¿Hay alguna manera de hacer la derecha UILabel truncar en lugar de la izquierda sin necesidad de utilizar una costumbre UITableViewCell? Sé cómo crear un UITableViewCell costumbre, pero parece una exageración?

Puedo establecer el UILineBreakMode a cambiar cuando el texto se trunca en el UILabel, pero no puedo ver una manera de hacer que el detailTextLabel ajustar su anchura para permitir que la propia pantalla textLabel.

[[lCell textLabel] setText:@"URL"];
[[lCell detailTextLabel] setText:@"http://www.mylongurl.com/subdirectory/etc"];
[[lCell detailTextLabel] setLineBreakMode:UILineBreakModeMiddleTruncation];
¿Fue útil?

Solución

Usted tiene un par de opciones.

Probablemente el más cercano en espíritu a lo que parecen ser solicitado es para la porquería alrededor con los marcos de la etiqueta en UITableViewDelegate de su tableView:willDisplayCell:forRowAtIndexPath:. (Hacer modificaciones de diseño celular en UITableViewDataSource de su tableView:cellForRowAtIndexPath: no va a volar, ya que UITableViewCells hacer todo su trabajo de diseño interno después tableView:cellForRowAtIndexPath:.) Puede utilizar -NSString de sizeWithFont: para ayudar a determinar los requisitos de diseño para su textLabel.

También puede tomar diferentes enfoques, como usted ha mencionado, como UITableViewCell subclases o cell.textLabel.adjustsFontSizeToFitWidth = YES de configuración.

Otros consejos

La mejor solución sería crear una subclase de células UITableView y establecer las personalizaciones de las etiquetas que tienes aquí en init. Es probable que desee para anular layoutSubviews y cambiar el tamaño de las etiquetas si desea que el de la izquierda a ser más ancha.

- (void)layoutSubviews {
    [super layoutSubviews];
    self.textLabel.frame = CGRectMake(0.0, 0.0, 100.0, self.frame.size.height);
    self.detailTextLabel.frame = CGRectMake(0.0, 0.0, 220.0, self.frame.size.height);
}

Obviamente esos son valores arbitrarios. Usted va a querer jugar con diferentes tamaños para satisfacer sus necesidades.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top