2011-01-10 19 views
9

Estoy tratando de hacer que un grupo de botones se comporten de alguna manera como flotante: se deja en CSS. Por lo tanto, cada vez que la vista cambie de tamaño, cambie la orientación, por ejemplo, los botones deben ajustarse para que quepan dentro de su vista de contenedor.flotador: dejado en objetivo-c

En modo horizontal, este UIScrollView debe desplazarse horizontalmente, en modo vertical, debe desplazarse verticalmente.

Estoy tratando de hacer un ScrollView similar a la pestaña "Destacados" en la aplicación iPad de YouTube. El paisaje tiene 4 columnas, retrato: 3 columnas, pestaña "Suscripciones", retrato, la misma vista tiene 2 columnas.

alt text

+2

+1 para una pregunta bien pensada y presentada. Solo lamento no poder responderlo. – Abizern

+0

+1 de mí también :) – Moszi

Respuesta

2

me han implementado un layout system para hacer cosas como esta. Hay un proyecto de demostración sobre cómo usarlo registrado en ese repositorio. Estaré encantado de responder cualquier pregunta al respecto. Esto es mucho más liviano que AQGridView, por lo que si no necesita la funcionalidad adicional que proporciona, recomendaría un enfoque similar al mío.

+0

El enlace ya no parece funcionar. – Myxtic

+0

Todavía puede encontrarlo en mi github, pero debería usar el diseño automático de Cocoa para hacer esto ahora. –

1

es posible que desee echa un vistazo a AQGridView, que es básicamente una re-implementación de NSCollectionView de cacao: https://github.com/AlanQuatermain/AQGridView

De lo contrario, es posible que deba reemplazar layoutSubviews en su parentView y luego reorganizar los subvistas (botones) en consecuencia cuando cambian las dimensiones de parentView.

Saludos,

Johannes

0

Si tuviera que aplicar manualmente (reemplazando layoutSubviews), creo que el algoritmo sería algo como esto:

  1. de inicio con X = 0, Y = 0 (suponiendo coordenadas volteado)
  2. Para cada botón:
    1. Si (ancho botón X +)> anchura contenedor, establecer X = 0, Y aumentan
    2. botón
    3. Place en (X, Y)
    4. Aumentar X por el botón de ancho