iphone - framework - Ajuste de las posiciones de las etiquetas en un UITableViewCell
uitableview custom cell swift 4 (4)
O bien, puede cambiar la celda de UITableViewCellStyleSubtitle al valor predeterminado y agregar sus propios objetos a cell.contentView y colocarlos donde desee. No es necesario subclasificar UITableViewCell (por ejemplo, celda personalizada) o usar layoutSubViews. Todo se puede hacer en tableView: cellForRowAtIndexPath.
Estoy usando un UITableViewCell con UITableViewCellStyleSubtitle. Sin embargo, debido a la imagen de fondo que estoy usando para la celda, no me gusta a dónde va el detailTextLabel. Quiero moverlo y cambiar su tamaño dentro de la celda, pero nada de lo que intento parece funcionar.
CGRect currRect = cell.detailTextLabel.frame;
cell.detailTextLabel.frame = CGRectMake(currRect.origin.x + 20, currRect.origin.y, currRect.size.width - 40, currRect.size.height);
Intenté poner este código en ambos métodos tableView: cellForRowAtIndexPath y tableView: willDisplayCell: forRowAtIndexPath, pero ninguno funciona. La etiqueta simplemente se queda donde está, y el mismo tamaño.
El ajuste de otras propiedades de la etiqueta (textAlignment, backgroundColor y, por supuesto, el propio texto) funciona correctamente.
¿Cómo puedo obtener la etiqueta de detalleText para moverme donde necesito?
En caso de que esto importe (aunque no veo por qué debería), esta celda en particular también tiene establecidas las propiedades imageView.image y backgroundImage. Ambas imágenes se muestran correctamente.
Probablemente podrías hacer esto con un CGAffineTransform
. El código (no probado) para empujar la detailTextLabel
10 píxeles a la derecha se vería aproximadamente como:
CGAffineTransform translate = CGAffineTransformMakeTranslation(10.0, 0.0);
[detailTextLabel setTransform:translate];
Si bien puedes hacer esto, creo que estarás más feliz creando tu propio UITableViewCell
personalizado.
Puede intentar ajustar la etiqueta con el nivel de sangría y sangría:
cell.indentationWidth = MY_DESIRED_WIDTH;
cell.indentationLevel = 1;
(para células sin sangría)
O para las celdas sangradas simplemente haga:
cell.indentationLevel = cell.indentationLevel + 1;
Ambos deben cambiar / sangrar sus etiquetas.
Usted querrá una subclase UITableViewCell
personalizada que anule las vistas de diseño de subvistas para hacer el trabajo sucio de diseñar las subvistas que se encuentran allí. Llamar a super y luego ajustar el detailTextLabel.frame
es probablemente lo más fácil de hacer.