¿Cómo establecer el margen de UITableViewCell
programáticamente sin crear una celda personalizada completamente nueva?cómo establecer el margen para uitableviewcell
Respuesta
Necesitas subclase UITableViewCell
y anular layoutSubviews
método:
- (void)layoutSubviews {
[super layoutSubviews];
CGRect tmpFrame = self.imageView.frame;
tmpFrame.origin.x += 10;
self.imageView.frame = tmpFrame;
tmpFrame = self.textLabel.frame;
tmpFrame.origin.x += 10;
self.textLabel.frame = tmpFrame;
tmpFrame = self.detailTextLabel.frame;
tmpFrame.origin.x += 10;
self.detailTextLabel.frame = tmpFrame;
}
¿No tendría más sentido hacer que UITableViewCell sea más alto que el contenido para empezar? Si está contenido siempre es 100px de alto, simplemente hacer que el 110px celular para conseguir que el espacio 10px extra que necesita, no necesita celda personalizado :)
quiero que el margen izquierdo sea 10px extra – JAHelia
, esta no es una página HTML, usted tiene un espacio limitado de 320 píxeles, por lo que solo necesita asegurarse de que está utilizando solo los 310 píxeles más adecuados, entonces los 10pixeles izquierdos son libres y se usan como "espaciado". –
sí, sé este punto, pero ¿cómo establecer el margen izquierdo de la celda? – JAHelia
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Este método devolverá la célula, puede configurar celular en ella . Simplemente ajuste el marco de los controles, muévalos a la posición calculada.
¿Puedes publicar un fragmento de código que muestre cómo aumentar el margen izquierdo (o relleno-equivalente izquierdo) de la celda en este método? – JAHelia
Para establecer el margen izquierdo se puede utilizar:
- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath: (NSIndexPath *)indexPath
{
return 1;
}
Esto no establece un margen, establece la profundidad de la fila especificada para mostrar su posición jerárquica en la sección. – Daniel
Esta solución es muy inteligente, pero no se puede usar si desea disminuir el margen predeterminado, lamentablemente ... – turingtested
Andrey tiene una buena solución, pero si se utiliza la vista accesorio necesita este código:
const int MARGIN = 16; // Left and right margin
- (void)layoutSubviews {
[super layoutSubviews];
/* Add left margin to the image and both labels */
CGRect frame = self.imageView.frame;
frame.origin.x += MARGIN;
self.imageView.frame = frame;
frame = self.textLabel.frame;
frame.origin.x += MARGIN;
frame.size.width -= 2 * MARGIN;
self.textLabel.frame = frame;
frame = self.detailTextLabel.frame;
frame.origin.x += MARGIN;
frame.size.width -= 2 * MARGIN;
self.detailTextLabel.frame = frame;
/* Add right margin to the accesory view */
if (self.accessoryType != UITableViewCellAccessoryNone) {
float estimatedAccesoryX = MAX(self.textLabel.frame.origin.x + self.textLabel.frame.size.width, self.detailTextLabel.frame.origin.x + self.detailTextLabel.frame.size.width);
for (UIView *subview in self.subviews) {
if (subview != self.textLabel &&
subview != self.detailTextLabel &&
subview != self.backgroundView &&
subview != self.contentView &&
subview != self.selectedBackgroundView &&
subview != self.imageView &&
subview.frame.origin.x > estimatedAccesoryX) {
// This subview should be the accessory, change its frame
frame = subview.frame;
frame.origin.x -= MARGIN;
subview.frame = frame;
break;
}
}
}
}
No hay wa fácil y para tratar con la vista de accesorios. He estado buscando por un tiempo y esta es la mejor solución que he visto hasta ahora.
- 1. Establecer altura programáticamente para una sola UITableViewCell?
- 2. UITableViewCell Establecer imagen seleccionada
- 3. Establecer distancia entre tramos usando el margen
- 4. Cómo establecer un margen inferior en FPDF
- 5. ¿Cómo establecer un margen en UITextView?
- 6. ¿Cómo establecer el margen de forma dinámica en Android?
- 7. cómo establecer el margen de texto interno del botón
- 8. android: establecer el margen en PopupWindow por el código
- 9. ¿Cómo establecer el margen para la barra de desplazamiento vertical desde el borde derecho en ListView?
- 10. Establecer margen izquierdo para un párrafo en html
- 11. ¿Cómo se puede establecer una subclase de UITableViewCell para el UITableView agrupado?
- 12. Margen establecido programáticamente para TableRow
- 13. ¿Cómo eliminar el margen entre dos imágenes?
- 14. Cómo establecer el margen de ImageView usando el código, no xml
- 15. UITableViewCell Deslizar para cajón
- 16. ¿Cómo establecer un Margen predeterminado para todos los controles en todas mis ventanas de WPF?
- 17. establecer mediante programación margen/relleno de TextView en un listview
- 18. Establecer margen negativo en ImageView cambia ImageView pero no Imagen
- 19. Cómo cambiar el margen de TextView
- 20. Cómo quitar el margen superior de TextView?
- 21. Margen establecer mediante programación en RadioButton no se aplica
- 22. cómo cambiar el margen izquierdo en gvim
- 23. Cómo agregar el bisel a UITableViewCell
- 24. Cómo eliminar el fondo blanco de UITableViewCell
- 25. Establecer el margen y la gravedad de la vista de texto en el código no funciona
- 26. Cómo refrescar UITableViewCell?
- 27. No se puede establecer el margen del elemento en ListView mediante el adaptador personalizado
- 28. ¿Cómo obtener el tamaño rect de UITableViewCell?
- 29. ¿Cómo configuro el margen de un objeto en IE?
- 30. UIButton para cubrir una UITableViewCell
que es una solución bastante simple y fácil, necesita crear una nueva subclase 'UITableViewCell' con este código y cambiar su' tableView: cellForRowAtIndexPath: 'para asignar sus celdas subclasificadas en lugar de' UITableViewCell'. –