NSCollectionView с разделами - как в iPhoto - PullRequest
9 голосов
/ 20 марта 2011

Я хотел бы создать NSCollectionView, похожий на тот, что в iPhoto '11. Я хочу сгруппировать несколько изображений в разделе, а также создать заголовок раздела. Заголовок раздела определенного раздела всегда виден до тех пор, пока не будет виден последний элемент этого раздела. Вы можете взглянуть на картинку, чтобы понять, что я имею в виду.

РЕДАКТИРОВАТЬ: я должен добавить, что содержимое не изображения.

enter image description here

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

Вам, вероятно, придется взглянуть на использование CALayers напрямую.NSCollectionView получает большую часть своей магии от CoreAnimation IIRC, и похоже, что вам, возможно, придется дублировать некоторые из них.В качестве альтернативы вы можете попробовать использовать вложенные представления коллекций - один, содержащий группы, затем каждая группа содержит другое представление коллекции отдельных элементов.

В любом случае, ваша иерархия представления / слоя будет одинаковой.У вас будет контейнер верхнего уровня, который имеет только один столбец (поскольку группы растягиваются по всей ширине), тогда каждый элемент в нем будет иметь любое количество столбцов в зависимости от ширины элемента.т. е. элементы представления вашей «групповой» коллекции будут растягиваться на всю ширину, но ваши отдельные элементы в этих группах не будут.

Если вы решите использовать необработанный подход CALayer, тогда вы захотите посмотретьна CAConstraintLayoutManager.Это то, что обеспечивает магию внутри NSCollectionView.Хорошее место, чтобы начать искать информацию об этом - Книга CoreAnimation Билла Дадни от Прагматических Программистов .В настоящее время Билл является официальным евангелистом платформы для Apple, поэтому я думаю, что можно с уверенностью сказать, что он знает, о чем там говорит.

В целом, я бы предложил использовать для начала вложенный подход NSCollectionView, и посмотритепри переходе к необработанному CoreAnimation только в том случае, если кажется, что производительности не хватает, или если у вас есть проблемы с получением каких-то вещей для работы.Использование NSCollectionView позволяет вам сохранить все ваши текущие значения NSView на месте, так что будет меньше работы.Если все в порядке, значит ты дома и сухой.Если нет, у вас есть еще кое-что, что вы можете настроить на свое усмотрение.

0 голосов
/ 16 апреля 2014
...