UITableViewCell
, UILabel
y UIButton
son todas las subclases de UIView
y la documentación de UIView
dice:
Diseño y gestión subvista
- Una vista puede contener cero o más subvistas.
- Cada vista define su propio comportamiento de cambio de tamaño predeterminado en relación con su vista principal.
- Una vista puede cambiar manualmente el tamaño y la posición de sus subvistas según sea necesario.
Por lo tanto, es ciertamente posible de hacer.
Usted puede crear sus etiquetas y botones usando initWithFrame:
con el argumento CGRectZero
y luego cambiar su tamaño (basado en el texto o lo que sea) usando setBounds:
o setFrame:
(porque en este momento sólo vamos a establecer el tamaño de la vista) . A continuación, agregue estas vistas como subvistas de la celda contentView
.
Luego, en una subclase personalizada de UITableViewCell
puede implementar su solución reemplazando el comportamiento por defecto (que no hace nada) de layoutSubviews:
para establecer el campo origen de los marcos de la subvista (es decir, CGRect) que posicionará los subvistas en el vista de contenido de la celda (el tamaño ya se ha configurado). Es posible que deba llamar al setNeedsLayout:
o al layoutIfNeeded:
.
Esto es realmente un bosquejo de cómo es posible implementar una solución porque quedan muchos detalles por hacer. Por ejemplo, si cambia el tamaño de un botón en función del texto del titleLabel
, es probable que desee rellenar algunos con el ancho y alto, de lo contrario, el botón tendrá el tamaño de la etiqueta y se verá extraño. En el método layoutSubviews:
podría haber una buena cantidad de lógica para distribuir las etiquetas y botones de la forma que desee (por ejemplo, sería más simple si todas las subvistas de una celda fueran del mismo tipo, como todas las etiquetas) esp. si las subvistas pueden ajustarse a una nueva línea.
Hola, es posible que desee formular una nueva pregunta, ya que no es una buena respuesta a mi pregunta. Sin embargo, me retiro de ese tema por ahora y analizaré esto si vuelvo a ese proyecto ... –