NSCollectionViewGridLayout в одной строке с изменяемыми размерами элементов коллекции, которые поддерживают соотношение сторон? - PullRequest
1 голос
/ 26 мая 2019

У меня есть NSCollectionView, который использует NSCollectionViewGridLayout для создания одной строки элементов представления коллекции. Строка может содержать один или несколько элементов и необходима горизонтальная прокрутка, то есть одна строка, неограниченные столбцы (один элемент на столбец).

Элементы представления коллекции имеют минимальный размер 240x160 и имеют соотношение сторон 3: 2 (ширина в 1,5 раза больше высоты). Максимального размера нет.

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

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

1) Я попытался удалить ограничения на начало / конец из представления элемента коллекции, но затем элементы не сливаются вместе. У меня не может быть промежутков между элементами, и я не могу, чтобы элементы перекрывали друг друга. 2) Я попытался удалить соотношение сторон, и элементы правильно изменили размер, но не сохранили соотношение сторон. 3) Я также попытался установить соотношение сторон для ширины представления коллекции, чтобы оно равнялось высоте коллекции, умноженной на число элементов, умноженное на соотношение сторон, но не смогло заставить его работать правильно (и кажется, вид взлома). Я также попробовал пользовательский объект макета, но столкнулся с различными ошибками. 3) Я рассматривал, но не пытался деактивировать ограничение соотношения сторон, когда начинается перетаскивание, и повторно активировать ограничение, когда перетаскивание заканчивается, но я не был уверен, сработает ли это (кажется, МОГ).

// setting up the grid layout
NSCollectionViewGridLayout* layout = [[[NSCollectionViewGridLayout alloc] init] autorelease];
layout.minimumInteritemSpacing = 0.0;
layout.minimumLineSpacing = 0.0;
layout.margins = NSEdgeInsetsMake(0.0, 0.0, 0.0, 0.0);
layout.maximumNumberOfRows = 1;
layout.maximumNumberOfColumns = 0;
layout.minimumItemSize = NSMakeSize(260.0, 160.0);
layout.maximumItemSize = NSZeroSize;
self.theCollectionView.collectionViewLayout = layout;

(не показаны ограничения в xib-файле элемента представления коллекции)

Желаемый результат: a) Пользователь изменяет размер одной строки элементов представления коллекции, перетаскивая разделитель разделенных видов, и они сохраняют свои пропорции при изменении размера. b) В идеале элементы представления коллекции должны быть центрированы горизонтально в виде коллекции, если элементы не прокручиваются горизонтально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...