Si puedo crear un UITableViewController, por ejemplo a través de Archivo → Nuevo Proyecto… → iOS → Maestro-Detalle de la Aplicación en Xcode, un UITableView se crea con un prototipo de celda.

La vista generada por la jerarquía es:

¿Cómo puedo ajustar el margen izquierdo del prototipo de células en un UITableView?

A la izquierda «margen» es automáticamente creado entre la Célula del Contenido UIView borde izquierdo y el «Título» del texto UILabel elemento como se muestra a continuación en color naranja.

¿Cómo puedo ajustar el margen izquierdo del prototipo de células en un UITableView?

Esto se traduce en un margen correspondiente entre el dispositivo del borde de la pantalla y la UILabel de texto en tiempo de ejecución:

¿Cómo puedo ajustar el margen izquierdo del prototipo de células en un UITableView?

Entonces, ¿dónde está el ancho de esta brecha conjunto, y cómo puede ser ajustado?

Los controles en el Tamaño de Inspector para la UILabel son de color gris:

¿Cómo puedo ajustar el margen izquierdo del prototipo de células en un UITableView?

Mi opción preferida iba a ser capaz de establecer el ancho de esta brecha desde dentro de la Interfaz del Generador, pero también me gustaría entender donde esta brecha se está establecida, y cómo modificar mediante programación.

  • Utilizando un estilo personalizado de la célula o básica?
  • Basic. El de arriba es tomado directamente desde el valor predeterminado Maestro-Detalle del proyecto en Xcode.
InformationsquelleAutor j b | 2014-09-29

10 Comentarios

  1. 48

    Usted sólo debe fijar contentInset propiedad de la vista de tabla. Puede establecer el valor de acuerdo a su necesidad.

    self.tableView.contentInset = UIEdgeInsetsMake(0, -15, 0, 0);

    RESULTADO DE SALIDA

    ¿Cómo puedo ajustar el margen izquierdo del prototipo de células en un UITableView?

    • Esto funciona, gracias! ¿Sabes si es posible establecer la contentInset en el Interface Builder?
    • Sí, es posible, incluso mediante el Interface Builder. Para que seleccione el formato tableview en IB > Seleccione Identidad Inspector (lado Derecho – 3ª opción) > Agregar la entrada como la siguiente en Definido por el Usuario de tiempo de ejecución de los Atributos haciendo clic en el signo más(+) icono. [Detalle: ruta de acceso clave:contentInset, Tipo:Rect, Valor: {{0, -15}, {0, 0}} ]
    • Yo no creo que esta sea una buena solución, si no que, que hace que su UITableViewCell mover a la izquierda con 15, y la celda de la derecha tiene 15 margen.
    • puedo dar diferentes infantes de marina a diferentes celular? no uno para todos
    • No entiendo por qué márgenes izquierdo y derecho no son idénticos por defecto…
  2. 37

    A partir de iOS 8 está disponible la propiedad de la celda layoutMargins.
    Así que la forma correcta de ajustar los márgenes de celda es la configuración de esta propiedad en su tableView:cellForRowAtIndexPath o en su personalizados UITableViewCell de esta manera:

    override func awakeFromNib() {
        super.awakeFromNib()
    
        self.layoutMargins = UIEdgeInsetsZero //or UIEdgeInsetsMake(top, left, bottom, right)
        self.separatorInset = UIEdgeInsetsZero //if you also want to adjust separatorInset
    }

    Espero que esto pueda ayudar a alguien.

    • Me gustaría sugerir que self.contentView.layoutMargins = UIEdgeInsetsZero tendrá el efecto deseado. Al menos para mí, ya que alinear todos los puntos de vista relativos a la vista del contenido de los márgenes.
    • De hecho, me agregan estos valores a la UITableView mismo, en lugar de las células, y funcionó bien (con iOS 9.2)
    • quiero dar las márgenes diferentes para diferentes celda, por lo que puede usted por favor, me sugieren cómo puedo hacer esto
    • Comenzando con iOS 11 directionalLayoutMargins debe ser utilizado, como por layoutMargins doc
  3. 37

    Ir a Main.storyboard > seleccione el UITableViewCell > Attributes Inspector. Cambiar el Separador de lista desplegable de Defecto Márgenes Personalizados Insertos. El cambio de la izquierda margen de 15 a 0

    ¿Cómo puedo ajustar el margen izquierdo del prototipo de células en un UITableView?

    • Esta es todavía la forma correcta de hacerlo dentro de Xcode del interface builder, en el año 2019 con Xcode 10.x y iOS 12.
    • no me funciona
  4. 8

    Acaba de agregar el método en el código como se mencionó en el siguiente enlace

    ¿Cómo puedo eliminar el margen en el lado izquierdo de una UITableView, sin crear una brecha en el derecho?

    El método que me gustaría mencionar es el

    -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
        if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
            [tableView setSeparatorInset:UIEdgeInsetsZero];
        }
        if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
        [tableView setLayoutMargins:UIEdgeInsetsZero];
        }
        if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
        cell.preservesSuperviewLayoutMargins = NO;
        [cell setLayoutMargins:UIEdgeInsetsZero];
        }
        if ([cell respondsToSelector:@selector(setSeparatorInset:)]){
        [cell setSeparatorInset:UIEdgeInsetsZero];
        }
    }
    • Incluir el código real/método que se sugiere, en lugar de solo compartir un enlace!
    • esto es lo que yo estaba buscando! Gracias
  5. 6

    En el formato tableview «Atributos del inspector de» establecer el Separador de los Márgenes de «Personalizado» con la Izquierda = 0.
    Eso es todo lo que tienes que hacer!

    • Esto cambia el separador de inserción (utilizado por ejemplo para el grupo de la tabla de títulos), pero no afecta el contenido de la celda. Configuración de Separador de Inserciones -> de Izquierda a 0, no afecta el espacio entre las células de la vista del contenido del borde izquierdo y el UILabel.
    • Tiene usted razón! Howerver, usted tendrá que utilizar en el caso de un «estilo personalizado de la célula» con la vista de la mesa de separador de inserciones con la izquierda = 0. Se puede notar en el lado derecho de la milanpanchal la captura de pantalla que los separadores y la divulgación de los indicadores se desplaza a la izquierda por 15px.
    • «estilo personalizado de la célula» – te de la posición de la etiqueta en la posición deseada, a la vista de la mesa de separador de inserciones con la izquierda = 0 – para ajustar el separador de posición.
    • Gracias por la info. En la práctica, ya estoy usando una celda Personalizada para mi proyecto. La motivación para mi pregunta era entender cómo la célula Básica de diseño estaba trabajando, y @milanpanchal la respuesta ilustra esta mostrando que el margen proviene de la UITableView‘s contentInset de la propiedad.
  6. 4

    Como WTIFS mencionado, UITableViewCell‘s indentation propiedad es una gran manera de guión etiquetas de texto en un built-en los estilos de celda. Acaba de hacer algo como esto para lograr un buen margen izquierdo:

    cell.indentationLevel = 2;

    Sin embargo, esto podría no funcionar para imageView.

    • Este archivos de un nivel de sangría en el texto de la etiqueta de la celda, no toda la célula, junto con un opcional de vista de imagen.
    • por desgracia, es cierto, la Adición de una nota para que
    • hey no se preocupe. La mejor manera que he encontrado para hacer esto era simplemente para hacer un custom UIViewCell. Que es bastante más fácil de opciones y tiene una flexibilidad mucho mayor.
  7. 3

    Si usted está usando un xib para su celular, asegúrese de que la «Relación de margen» está desactivada. Esto se puede verificar a través de inspector como se muestra en la siguiente captura de pantalla:

    ¿Cómo puedo ajustar el margen izquierdo del prototipo de células en un UITableView?

  8. 1

    Aquí es el swift versión de Chetan la respuesta:

    override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
            tableView.separatorInset = UIEdgeInsets.zero
            tableView.layoutMargins = UIEdgeInsets.zero
            cell.preservesSuperviewLayoutMargins = false
            cell.layoutMargins = UIEdgeInsets.zero
            cell.separatorInset = UIEdgeInsets.zero
    }
  9. 0

    Creo que me acaba de llegar con una solución fácil. lol.

    La respuesta tiene algún problema…es disminuir la izquierda de la brecha, pero que resulta un derecho vacío.

    He utilizado el limita en el Interface Builder.

    Añadir un -15 margen izquierdo restringir a la Vista de Tabla.

    A continuación, agregue algunos Sangría a la Celda de la Tabla para hacer que el contenido se vea mejor.


    Aquí está un poco de paso-por-paso fotos:

    Agregar la restricción. Recuerde desactivar la distancia al vecino más cercano».

    ¿Cómo puedo ajustar el margen izquierdo del prototipo de células en un UITableView?

    Las Celdas de la Tabla se mueve a la izquierda. Pero parece demasiado cerca de margen.

    ¿Cómo puedo ajustar el margen izquierdo del prototipo de células en un UITableView?

    Así que elige la Celda de la Tabla, y añadir un poco de sangría en el área de la derecha.

    ¿Cómo puedo ajustar el margen izquierdo del prototipo de células en un UITableView?

  10. 0

    Y si desea cambiar sólo el margen izquierdo de la celda textlabel sólo, a continuación, cambiar el Horizontal Space Constraint 'Constant' decir 16 o 8 basado en el relleno que desee.(Esto es en el archivo nib). Si usted no puede llegar a la ‘constante’ Seleccione la etiqueta, cambiar la coordenada x en el FrameRectangle Vista y, a continuación, haga clic en la restricción de pines a la izquierda)
    ¿Cómo puedo ajustar el margen izquierdo del prototipo de células en un UITableView?

Dejar respuesta

Please enter your comment!
Please enter your name here