2010-01-05 12 views
10

Tengo una UITableViewCell que me gustaría agregar una vista a la derecha (además de la vista de accesorios). Intenté configurar el tamaño de textLabel para que sea un poco más estrecho, pero simplemente lo redimensiona.cambiar tamaño UITableViewCell textLabel

¿Hay alguna manera de cambiar el tamaño de TextLabel?

Respuesta

8

El objeto al que hace referencia la propiedad textLabel predeterminada, en las instancias de UITableViewCell del tipo UITableViewCellStyleDefault, no se puede cambiar de tamaño, al menos no en mi experiencia. La mejor idea en estos casos es crear su propia subclase de UITableViewCell, en código o incluso con Interface Builder si lo desea, y darle el diseño que desee.

16

En realidad se puede cambiar de tamaño si se crea una subclase UITableViewCell y reemplaza el método layoutSubviews:

- (void)layoutSubviews { 
[super layoutSubviews]; //The default implementation of the layoutSubviews 

CGRect textLabelFrame = self.textLabel.frame; 
textLabelFrame.size.width = _textLabelMaxWidth; 
self.textLabel.frame = textLabelFrame; 
} 

espero que ayude.

+0

Esto solo funciona para mí cuando se recarga la celda, ¿alguna idea? –

+0

@AdamCarter Sí, así es como se supone que debe funcionar, a menos que desee cambiarlo en un momento diferente y de un evento diferente. –

+1

Esto fue muy útil para mí. Tenía una subclase de UITableViewCell y los tamaños de etiqueta seguirían volviendo a los valores predeterminados del guión gráfico. ¡Aprecio el consejo con esto! – mikeho

1

Me he dado cuenta de que textLabel cambia de tamaño para acomodar el accessView. Por lo tanto, si desea que la etiqueta use toda la celda, puede configurar accessoryView como nulo (creo que este es el comportamiento predeterminado de todos modos). O, por ejemplo, si desea que la etiqueta ocupe solo la mitad izquierda de la celda, haga que accessView sea una UIView vacía que abarque la mitad derecha de la celda. (No tiene que estar vacío, puede poner cosas allí ... mi punto es que reducirá la etiqueta de texto.)

0

Puede hacer el cambio de tamaño de la célula UITableView de esta manera más simple. Primero, eche un vistazo a mi proyecto de muestra

ResizableUIView

Se le mostrará cómo se puede cambiar el tamaño de base de la célula UITableView en su componente interno en la forma más sencilla mediante la creación de restricciones.

tblTest.estimatedRowHeight = 100 // This is where you can set your estimated row height 
    tblTest.rowHeight = UITableViewAutomaticDimension 

Otro hecho importante es sus líneas de etiqueta: enter image description here

debe ser

Con el fin de hacer que usted entiende, puse UILabel dentro UIView, echar un vistazo a cómo restricciones creadas en su UIView padre.

Si aún necesita ayuda, solo pregunte.

Buena suerte

Cuestiones relacionadas