У меня есть UICollectionView, который я настроил, все работает нормально (выбор, заголовки и т. д.), однако в некоторых ситуациях я хочу изменить направление прокрутки.
Короче говоря, если я захожу в раскадровку и меняю scrollDirection, он работает нормально, но я хочу сделать это программно!
Я попытался изменить направление прокрутки представления коллекции напрямую с помощью чего-то вроде
[myCollectionView setScrollDirection:....and so on.......
Но это не работает, я не могу найти scrollDirection или что-то подобное там.
Я также пытался настроить макет потока, но я уверен, что делаю это неправильно (т.е. пытаюсь установить ViewLayout в FlowLayout).
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
[myCollectionView setCollectionViewLayout:flowLayout];
Это вылетает из-за множества проблем с ограничениями, и я подозреваю, что мне нужно проделать гораздо больше работы с flowLayout (из того, что я обнаружил, сейчас это немного выше меня).
Следует также отметить, что я использую пользовательскую ячейку, верхние и нижние колонтитулы.
Короче говоря, есть ли простой способ сделать это или нет? ИЛИ кто-нибудь знает хороший учебник по Flow Layout?
РЕДАКТИРОВАТЬ
Я настраиваю представление коллекции как таковое;
[myCollectionView setDataSource:self];
[myCollectionView setDelegate:self];
Я реализую эти методы делегирования, и все работает нормально
viewForSupplementaryElementOfKind
numberOfSectionsInCollectionView
numberOfItemsInSection
cellForItemAtIndexPath
didSelectItemAtIndexPath
Я добавил DataSource и Delegate в .h, а также делегат FlowLayout, НО я не уверен, что мне также нужно для последнего.
Большая часть визуального макета выполняется в Story Board, есть несколько вещей, таких как шрифт, размер и цвет, которые я делаю программно.
ДРУГОЕ РЕДАКТИРОВАНИЕ
Это ошибка, когда я пытаюсь изменить FlowLayout, я также получаю это, когда пытаюсь сделать макет недействительным.
Невозможно одновременно удовлетворить ограничения. Вероятно, по крайней мере одно из ограничений в следующем списке вам не нужно. Попробуйте следующее: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательное ограничение или ограничения, и исправить его. (Примечание. Если вы видите NSAutoresizingMaskLayoutConstraints, которые не понимаете, обратитесь к документации по свойству UIView translatesAutoresizingMaskIntoConstraints.)
"<NSAutoresizingMaskLayoutConstraint:0x89967f0 h=--& v=--& V:[menuCell:0x8991700(50)]>",
"<NSLayoutConstraint:0x8991200 menuCell:0x8991700.bottom == UILabel:0x8992be0.bottom + 100>",
"<NSLayoutConstraint:0x898fd50 UILabel:0x8992be0.top == menuCell:0x8991700.top + 3>"
Попытается восстановиться, нарушив ограничение
Прервите objc_exception_throw, чтобы перехватить это в отладчике. Также могут быть полезны методы из категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в .