2010-03-26 15 views
5

Mi aplicación tiene algunas celdas de tabla que varían en altura. Las celdas también pueden tener un UIButton configurado para ser un botón de divulgación de detalles (redondo, azul con flecha) como su vista de accesorios.UITableViewCells de diferentes alturas coloca sus accesorios en diferentes posiciones X

Dependiendo de la altura de la celda, la vista de accesorios se coloca de forma diferente. Al principio pensé que era el código de diseño de mi celular el que causaba el problema, así que establecí una prueba independiente rápida que usa vanilla UITableCells para eliminar la posibilidad de que pudiera ser mi culpa.

Configuré una vista en el constructor de interfaz, y acabo de agregar una vista a las celdas de la tabla, establecí sus alturas en diferentes valores y luego agregué un botón de divulgación de detalles a cada una. Nada más y nada menos.

Esto es lo que veo:

UITableViewCells with different x values http://jasarien.com/jing/accessoryView_x_difference.png

añadí las guías de tamaño (gracias a Xscope) para que pueda ver la diferencia en las posiciones x vista accesorio.

Las alturas son:

  • superior 37px
  • mediados 68px
  • 44px inferior (por defecto, altura sin tocar)

Si aumento de la altura de cualquier heigher de 68px la vista accesorio no se mueve más hacia la izquierda.

¿Esto es un error? ¿Hay alguna forma en que pueda evitar que esto suceda?

Aquí está el proyecto de prueba para reproducir.

TableViewCellHeightsTest.zip

+0

No puedo reproducir esto en iPhone SDK 3.0. Funciona bien aquí. ¿Podrías subir el proyecto de prueba independiente para poder descargarlo y probarlo? –

+0

He agregado un enlace en la pregunta. – Jasarien

Respuesta

2

que tiene el mismo problema cuando he descargado el archivo. En lugar de configurar los botones de detalle de divulgación de forma manual y asignarlos a las células como salidas, borrar todos los indicadores de divulgación y tratar de colocarlos de la manera siguiente:

alt text http://i44.tinypic.com/35hjq5y.png

+0

Sí, noté que después de decir que no veías el problema. Sin embargo, en mi código, los botones de divulgación se crean programáticamente y se configuran como la vista de accesorios de la celda, por lo que intenté replicar eso en el constructor de interfaz. Supongo que pasé por alto la simplicidad de simplemente configurar el tipo de accesorio de la celda para revelar detalles y luego configurar su acción ... – Jasarien

+0

Este es un problema muy molesto. Tengo el mismo problema, establecer todo mi código de celda programáticamente y obtener diferentes posiciones para los indicadores en función de la altura de la celda. –

2

Nota: He definido el color de fondo de la vista de contenido a azul para una mejor visión.

enter image description here

Figura 1 (accesorio altura vista es 17,0)

que estaba frente a este problema y tenía el lujo de 2 colegas ayudar a averiguar la causa.

Descubrimos que al utilizar el valor predeterminado UITableViewCell (en mi caso, del estilo UITableViewCellStyleDefault aunque creo que se aplica a todos los demás estilos), si la altura de la vista accesoria supera el número mágico 16.0, la posición x del la vista de accesorio comienza a diferir con la varianza de altura de la celda.

enter image description here

Figura 2 (accesorio altura de vista es 16,0)

Mi colega ha puesto en marcha una costumbre UITableViewCell y el uso de subvistas al diseño de contenido y fue capaz de evitar este problema.

Así que tienes 3 opciones:

  • Restringir la altura de su visión cómplice de 16,0 y por debajo.
  • Usa un UITableViewCell personalizado y diseña tu propio contenido como subvistas.
  • Utilice el tipo de accesorio predeterminado.

enter image description here

Figura 3 (predeterminado tipo de accesorio UITableViewCellAccessoryDetailDisclosureButton)

1

que estaba teniendo el mismo problema y fijo que al hacer que el accesorio de encargo ver la misma altura que la célula.

+0

¡Fácilmente la mejor respuesta! ¡Gracias! – uvesten

Cuestiones relacionadas