Какая разница между UIStackView и UICollectionView в Xcode 7?

Какая разница между UIHorizontalStackView и представлением коллекции (также вертикальным стеком)?

Не может ли collectionView быть горизонтальным и вертикальным? Почему люди используют оба?

Что делает UIStackView, что просмотр коллекции не может?

Ответ 1

  • UICollectionView похож на сетку, UIStackView имеет только 1 размер: вертикальный или горизонтальный.

UICollectionView похож на UITableView, но поддерживает более чем однострочные макеты.

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

против

Класс UIStackView предоставляет упрощенный интерфейс для прокладки набор представлений в столбце или строке

  1. Для меня, с помощью StackView, вы пользуетесь функцией AutoLayout, например: вы кладете 4 представления в стек, этот компонент будет определять, как эти представления будут отображаться на экране в зависимости от их размера.

Ответ 2

Да, представление коллекции с использованием макета потока или настраиваемого макета может быть вертикальным или горизонтальным. При использовании компоновки потоков довольно легко настроить один столбец элементов, все из которых соответствуют их внутреннему размеру содержимого.

Вид стека в основном представляет собой обрезку и специализированную версию. Это избавляет от гибкости компоновки коллекций и в свою очередь дает вам упрощенный интерфейс.

В зависимости от вашего варианта использования вам может не понадобиться сложность представления коллекции. Есть также несколько приятных функций, например, если у вас есть список параметров для отображения, но некоторые из них не подходят во всех случаях, тогда вы можете просто скрыть те, которые не являются, и представление стека справится с этим. Скрытие элементов в виде коллекции требует гораздо большей конфигурации.

Представления стека также формируют очень легкий вариант для представлений контейнеров, созданных полностью в построителе интерфейсов и без требования для кода. Таким образом, представление стека заменяет множество ограничений автоматического макета, используя внутренние размеры содержимого подзонов, которым он управляет потоком макета. Вы также можете очень эффективно вложить представления стека, чтобы сформировать большинство табличных макетов.

Ответ 3

Представления коллекции имеют ячейки и работают с представлением данных. Представления стека - способ отображения макетов в контейнере. Представления стека не имеют возможности работать с данными, поскольку представления коллекций относятся к делегатам. Вид коллекции представляет собой центр обработки данных, а представления стека - сфокусированы по макетам.

Ответ 4

Представления коллекции представляют собой гораздо более сложные элементы пользовательского интерфейса, требующие объекта DataSource, а также макет и т.д.

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

Stack Views также не имеют делегата и не имеют механизма для выбора элементов или чего-либо подобного.

Ответ 5

Если вы спросите себя, почему эти 2 варианта есть, что похоже на очень похожее - иногда вы создадите пользовательскую ячейку (tableview или collectionview) и добавите другой tableview или коллекцию в качестве подзаголовка - тогда вы будете любить знать, как работает UIStackView.