Когда использовать UICollectionView вместо UITableView?
я нашел это UICollectionView Это как обновленная версия UITableView введено в iOS6, но когда я должен выбрать UICollectionView вместо UITableView?
есть еще приложения с помощью UITableView, если UICollectionView может сделать что угодно UITableView может сделать, почему люди до сих пор используют UITableView? Есть ли разница в том, что касается производительности?
спасибо!
13 ответов:
это зависит от требований. Как потоки приложений определяют тип пользовательского интерфейса для интеграции в приложение.
люди в основном использовать
UICollectionviewдля создания типов UIs с несколькими изображениями, показанными в сетке. Это будет иметь сложную логику с использованиемUITableView, но сUICollectionview, Это было бы легко.при использовании
UICollectionview, вам не нужно устанавливать кнопки с тегами или другими вещами, получая значения выбранных элементов. Вы можете просто получить-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPathи вUITableViewDelegate:`-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`вы получили выбранную строку вместо элемента, поэтому для создания сетки или измененных элементов, используя
UICollectionviewлучше.для перечисления деталей каждого элемента, люди используют
UITableViewпотому что он показывает больше информации о каждом элементе.Apple Docs:
Ссылка На Класс UICollectionView
класс UICollectionView управляет упорядоченной коллекцией элементов данных и представляет они используют настраиваемые макеты. Представления коллекции предоставляют ту же общую функцию, что и табличные представления, за исключением того, что представление коллекции может поддерживать не только одноколоночные макеты. Представления коллекции поддерживают настраиваемые макеты, которые можно использовать для реализации многоколоночных сеток, плиточных макетов, круговых макетов и многих других. Вы даже можете изменить макет представления коллекции динамически, если хотите.
в табличном представлении отображается список элементов в одном столбце. UITableView-это подкласс UIScrollView, который позволяет пользователям прокручивать таблицу, хотя UITableView позволяет только вертикальную прокрутку. Ячейки, содержащие отдельные элементы таблицы, являются объектами UITableViewCell; UITableView использует эти объекты для рисования видимых строк таблицы. Ячейки имеют содержимое-заголовки и изображения-и могут иметь рядом с правым краем дополнительные виды. Стандартные вспомогательные представления являются индикаторами раскрытия или кнопками раскрытия деталей; первый выводит на следующий уровень иерархии данных, а второй-на подробный вид выбранного элемента. Дополнительные представления также могут быть элементами управления фреймворка, такими как переключатели и ползунки, или могут быть пользовательскими представлениями. Табличные представления могут входить в режим редактирования, в котором пользователи могут вставлять, удалять и изменять порядок строк таблицы.
для простых списков и вперед/назад navigtaion, используйте
UITableView.Если вам нужна высокая степень настраиваемости, используйте
UICollectionView.
вот мои критерии:
Если UITableView может это сделать, используйте его
Если UITableView нужно много кода, чтобы сделать это или не может сделать это вообще, используйте UICollectionView.
вы должны рассмотреть ограничения на UITableView перед принятием решения: это один столбец. И вы можете настроить только ячейки, но не раздел фонов и тому подобное. Так что если у вас есть прямой список вещей, без лишних наворотов - это похоже на стандартный вид iOS болота, в основном-тогда используйте UITableview. Если у вас есть пользовательские вставки или граница вокруг каждого раздела, используйте UICollectionView.
Я на самом деле рассматриваю UICollectionView для всех вещей просто потому, что это очень дорого, когда вы начинаете разрабатывать свой вид в виде таблицы, а затем узнаете, что он не может сделать то, что вам нужно. 1-й опыт ;)
редактировать после еще большего опыта работы с двумя: игнорировать это последнее параграф. UICollectionView требует много шаблонного кода, чтобы заставить его работать, как UITableView. Используйте UICollectionView только тогда, когда это действительно необходимо. ;)
согласно моей точке зрения основное различие между collectionView и tableView заключается в том, что
TABLEVIEW --> Показать список элементов только в одном столбце.
коллекция-Вид -->Показать список элементов в нескольких столбцах.
надеюсь, что это поможет вам.
Если вы выбрали UITableView для iPhone, убедитесь, что вы сначала рассмотрели свою стратегию iPad. Если вам нужен макет для iPad, вы можете захотеть, чтобы этот одностолбцовый макет стал сеткой.
хотя это не требуется, я всегда использую collectionview. Таким образом, я могу легко адаптировать, как мои коллекции представлены для разных разрешений. Плюс в том, что он готов быстро добавлять новые типы ячеек при рефакторинге в будущем.
Я не вижу смысла в просмотре таблиц. Очень просто использовать представление коллекции для представления таблицы. ММО.
оба зависят от требований. Табличные представления также поддерживают различные сценарии редактирования. Эта поддержка не была реализована в классах представления коллекции. Если вы выполняете преобразование из табличного представления, основанного на этих методах, ожидайте, что вы сделаете немного дополнительную тяжелую работу в представлении коллекции. Заголовки разделов вида коллекции могут быть размещены в любом месте вида. и UITableView не нужно устанавливать кнопки с тегами или другими вещами, получая выбранные элементы ценности.
его полностью зависит от того, как ваши данные будут показаны. Как упоминалось многими выше, если вам требуется только один набор данных, и это тоже не сложно, перейдите на
UITableViewиспользоватьUICollectionView.
UICollectionViewявляется дружественным к настройке.если вы имеете дело с несколькими высотами ячеек или около того, то перейдите на
UICollectionView.
из моего личного опыта эти два элемента следует сравнивать только слабо.
TableView
TableView-это элемент пользовательского интерфейса, предназначенный для отображения данных в формате списка. Существует определенная функциональность, которая поставляется в стандартной комплектации с UITableView, например:
- Вспомогательный Вид
- Стиль Выбора Ячейки
- стиль редактирования (кнопки удаления и редактирования).
вышеуказанные элементы усиления удобство использования данных при просмотре и взаимодействии в формате списка. Например, просмотр электронной почты.
CollectionView
CollectionView-это элемент пользовательского интерфейса, предназначенный для отображения содержимого с помощью пользовательского макета (обычно все, что не является списком). CollectionViews улучшает функциональность отображения данных в полностью заказных стилях макета, а также динамически изменяющихся макетов на лету. Вот некоторые примеры:
- горизонтальный Списки
- Фото Галереи
- эскиз
- Карусель
- набирает
- выкладка элементов на карте
- etc.
CollectionViews также допускают несколько вариантов выбора.
вывод
Как вы можете видеть из вышесказанного, оба имеют совершенно разные варианты использования и предназначены для повышения разработки и удобства использования своих собственных конкретных данных наборы.
Если вы смотрите на отображение чего-либо в стиле списка со следующими взаимодействиями: - Добавление - Удаление - Повторный заказ Затем UITableView упростит этот процесс, предоставив поддержку прямо из коробки.
что-нибудь еще, вы должны использовать преимущества CollectionView, как у вас есть больше гибкости.
на основе нашей потребности мы выбираем TableView или CollectionView.
пример:
для телефонных контактов tableView является лучшим вариантом.
для фотогалереи, вид коллекции будет лучшим вариантом.
У меня была эта проблема в моем текущем проекте. Что использовать. В моем случае это было очень просто. Мне нужны обе. Мне нужно было, чтобы мой вид выглядел как UITableView, а также изменить его изменение / макет. Итак, был использован UICollectionView. Я также использую UITableView везде, где мне не нужна дополнительная настройка. Поскольку UiTableView поставляется с макетом по умолчанию, который включает изображения и текст - я использую его для простоты.
основанный на нашем требовании мы выбираем взгляд UITableView или UICollection.
Если мы хотим отображать изображения или элементы в виде сетки или если нам нужна дополнительная настраиваемость, мы используем UICollectionview.
для включения каждого элемента детали и subdetails мы использовать UITableView.
UICollectionView: Класс UICollectionView управляет упорядоченной коллекцией элементов данных и представляет их с помощью настраиваемых макетов. Представления коллекции обеспечивают то же самое общая функция как табличные представления за исключением того, что представление коллекции может поддерживать больше, чем просто одноколоночные макеты.
UITableView: в табличном представлении отображается список элементов в одном столбце. UITableView-это подкласс UIScrollView, который позволяет пользователям прокручивать таблицу, хотя UITableView позволяет только вертикальную прокрутку.
на практике все используют UICollectionView, с которым я столкнулся, когда им нужен только UITableView. -Он одномерный. Он идет вверх и вниз. Почему вы добавляете ненужные методы делегирования для макета и данных?". Однажды я потратил дополнительные 2 часа, помогая стартапу узнать, почему их UICollectionViewCell был раздавлен, потому что владелец, который не читал руководство по анимации, ни HIG, ни руководство UICollectionView, решил использовать его и добавить переменные высоты и анимацию. Разумеется, он дал себе головную боль и много потерял времени на не-бизнес-критической проблеме, которую он мог бы избежать, просто используя ячейку таблицы, так как нет дополнительного делегата макета + перо.
позвольте мне получить это прямо, я все для UICollectionView, когда ваши данные и дисплей нужен. Они очень могущественны. Но на практике, большинство людей, которых я видел, использовали их в списки.
Это вызывает еще один недостаток. Они также используются в коротких, постоянных списках, которые никогда не изменятся. В в этом случае, просто сделайте Xib. Или напишите пользовательское представление, которое их складывает. Зачем? Потому что вам не нужно управление памятью для 5 наборов меток с кнопкой или переключателем. Если они могут измениться, то да, используйте список. Если вы хотите физику, то UICollectionView хорошо работает с некоторыми классными эффектами. Но действительно ли вам нужно добавить 5 методов делегирования и систему компоновки для 5 меток, которые никогда не будут двигаться?
кроме того, я не забываю, что iOS теперь тоже имеет собственный вид укладки. Я никогда не смогу получить его чтобы деформировать, как я хочу, хотя я довольно хорошо разбираюсь в 2D и анимационных системах, поэтому я никогда не использую встроенный.
все, что я говорю, определить ваши требования. Возможно, Вам не нужен ни один из них, если ваш пользовательский интерфейс не добавляет/удаляет элементы и не обновляет себя. Или, может быть, вы хотите написать карточную игру и выбросить их практически на стол, а затем использовать UICollectionView с физической системой для ее руководства по компоновке.
Comments