Немного фоне первых - это UICollectionView
сочетается с UICollectionViewLayout
, который определяет как ячейки размещаются в представлении. Это означает, что представление коллекции очень гибкое (вы можете создать с ним практически любой макет), но также означает, что модификация макетов может быть немного запутанной.
Создание совершенно нового класса макета является сложным, поэтому вместо этого вы хотите попробовать изменить макет по умолчанию (UICollectionViewFlowLayout
), чтобы получить выравнивание по центру. Чтобы сделать его еще проще, вы, вероятно, хотите избежать подклассификации самой компоновки потока.
Вот один подход (он не может быть лучшим подходом, но это первый один я могу думать) - разделить ваши клетки на две части, а именно:
[ x x x x x ] <-- Section 1
[ x x x x x ] <-- Section 1
[ x x ] <-- Section 2
Это должно быть достаточно простым, если вы знаете ширину прокрутки и количество ячеек, которые могут вставляться в каждую строку.
Затем используйте метод делегата collectionView:layout:insetForSectionAtIndex:
, чтобы установить поля для второй секции так, чтобы она выглядела вертикально по центру. Как только вы это сделаете, вам просто нужно убедиться, что вы перекомпилируете соответствующие разделы/вставки разделов, чтобы можно было поддерживать как портретную, так и ландшафтную ориентации.
Существует несколько схожий вопрос здесь - How to center align the cells of a UICollectionView? - это более подробное описание методов вставки, хотя это не совсем попытка сделать то же самое, что и вы.
Ну, я не знаю, это лучший способ сделать это, но он работает. И это все, что мне нужно. Спасибо. – deycall
Я думаю, что это, наверное, самый простой, с точки зрения количества строк/не подклассифицируя макет. Если вы закончите работу над макетом, вы можете рассмотреть этот подход. – lxt
Вы также можете подклассифицировать 'UICollectionViewFlowLayout' вместо' UICollectionViewLayout'. Макет по-прежнему работает на основе незначительных изменений, и это делает большую часть тяжелой работы для вас, вы просто настраиваете бит, который вы хотите. – Fogmeister