2011-03-20 15 views
9

Me gustaría construir un NSCollectionView similar al de iPhoto '11. Quiero agrupar varias imágenes en la sección y crear un encabezado de sección también. El encabezado de sección de una sección específica siempre está visible hasta que el último elemento de esa sección esté visible. Puedes echarle un vistazo a la imagen para ver a qué me refiero.NSCollectionView con secciones - como en iPhoto

EDITAR: Debo agregar que los contenidos no son imágenes.

enter image description here

Gracias de antemano

Respuesta

2

usted está probablemente va a tener que buscar en el uso directamente CALayers. NSCollectionView obtiene la mayor parte de su magia de CoreAnimation IIRC, y parece que tendrías que duplicar algo de eso. Alternativamente, puede intentar usar vistas de colección anidadas, una que contenga grupos, y luego cada grupo contenga otra vista de colección de elementos individuales.

De cualquier forma, su jerarquía de vista/capa será la misma. Tendrás un contenedor de nivel superior que tiene una sola columna (ya que los grupos se extienden por todo el ancho), y cada elemento dentro de ese tendrá una cantidad de columnas basada en el ancho del artículo. es decir, los elementos de la vista de colección de su "grupo" se extenderán hasta completar el ancho, pero sus elementos individuales dentro de esos grupos no lo harán.

Si elige utilizar el enfoque CALayer sin procesar, entonces querrá consultar CAConstraintLayoutManager. Esto es lo que proporciona la magia dentro de NSCollectionView. Un buen lugar para comenzar a buscar información sobre esto es Bill Dudney's CoreAnimation book from Pragmatic Programmers. Bill es ahora el evangelista de la plataforma oficial para Apple, así que creo que es seguro decir que él sabe de lo que está hablando allí.

En general, sugiero usar un enfoque anidado NSCollectionView para empezar, y ver caer al CoreAnimation puro solo si parece que falta rendimiento, o si tiene problemas para hacer que algo funcione. El uso de NSCollectionView le permite mantener su NSView -ness actual en su lugar, por lo que será menos trabajo. Si resulta que está bien, entonces estás en casa & seco. Si no, tienes algo más que probar que puedes ajustar al contenido de tu corazón.

+0

NSCollectionView no le gusta no es todo siendo la misma altura, vistas de recogida de manera anidados probablemente no funcionará a menos que usted don' Les importo que se desplacen. –

-3
+0

Este ejemplo trata sobre NSTableView que no está relacionado con NSCollectionView en absoluto. – McZonk

+0

@McZonk Sí, se trata de NSTableView. Porque hasta donde sé, no puedes construir una vista similar a iphoto usando NSCollectionView. así que use NSTableView con la sección y construya su propio collectionView. – kilik52

+0

Al usar NSTableView, pierde mucha flexibilidad que NSCollectionView ofrece. Tal vez https://github.com/phranck/CNGridView/ vale la pena intentarlo? – McZonk

Cuestiones relacionadas