Pregunta

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 la sección de una sección específica siempre es visible hasta que el último elemento de esa sección sea visible. Puedes echar un vistazo a la imagen para ver a qué me refiero.

Editar: debo agregar que el contenido no son imágenes.

enter image description here

Gracias por adelantado

¿Fue útil?

Solución

Probablemente tendrá que mirar el uso de Calayers directamente. NSCollectionView Obtiene la mayor parte de su magia de Coreanimation IIRC, y parece que es posible que tengas que duplicar algo de eso. Alternativamente, puede intentar usar vistas de colección anidadas: una que contenga grupos, luego cada grupo contiene otra vista de colección de elementos individuales.

De cualquier manera, su jerarquía de visión/capa será la misma. Tendrá un contenedor de nivel superior que solo tiene una columna (ya que los grupos se extienden en todo el ancho), entonces cada elemento dentro de eso tendrá cualquier número de columnas, según el ancho del elemento. es decir, sus elementos de vista de colección de 'grupo' se extenderán para llenar el ancho, pero sus artículos individuales dentro de esos grupos no lo harán.

Si elige usar el crudo CALayer enfoque, entonces querrás mirar CAConstraintLayoutManager. Esto es lo que proporciona la magia en el interior NSCollectionView. Un buen lugar para comenzar a buscar información sobre esto es Libro de coreanimation de Bill Dudney de programadores pragmáticos. Bill es ahora el evangelista oficial de la plataforma para Apple, así que creo que es seguro decir que sabe de qué está hablando allí.

En general, sugeriría usar un anidado NSCollectionView Enfoque para comenzar y mire la caída de la coreanimación cruda solo si el rendimiento parece faltar, o si tiene problemas para que algunas cosas funcionen. Usando NSCollectionView te permite mantener todo tu actual NSView-Nness en su lugar, por lo que será menos trabajo. Si resulta bien, entonces estás en casa y seco. Si no, tienes algo más que probar que puedes ajustar al contenido de tu corazón.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top