ݺߣ

ݺߣShare a Scribd company logo
UICollectionView
Зимин Александр
iOS разработчик
UX дизайнер
Что будет сегодня
2
Что будет сегодня
2
• Что такое collection view
Что будет сегодня
2
• Что такое collection view
• Базовое устройство
Что будет сегодня
2
• Что такое collection view
• Базовое устройство
• Ячейки
Что будет сегодня
2
• Что такое collection view
• Базовое устройство
• Ячейки
• Протоколы collection view
Что будет сегодня
2
• Что такое collection view
• Базовое устройство
• Ячейки
• Протоколы collection view
• Layout у collection view
Чего не будет
3
Чего не будет
3
• Редактирование контента
Чего не будет
3
• Редактирование контента
• Смена layout у collection view
Чего не будет
3
• Редактирование контента
• Смена layout у collection view
• Custom layout attributes
Чего не будет
3
• Редактирование контента
• Смена layout у collection view
• Custom layout attributes
• UIDynamics
UICollectionView
4
4
5
5
UICollectionView
Основные понятия
6
Основные понятия
6
• UICollectionView
Основные понятия
6
• UICollectionView
• UICollectionReusableView
Основные понятия
6
• UICollectionView
• UICollectionReusableView
• UICollectionViewCell
Основные понятия
6
• UICollectionView
• UICollectionReusableView
• UICollectionViewCell
• Supplementary Views
Основные понятия
6
• UICollectionView
• UICollectionReusableView
• UICollectionViewCell
• Supplementary Views
• Decoration View
Основные понятия
6
• UICollectionView
• UICollectionReusableView
• UICollectionViewCell
• Supplementary Views
• Decoration View
• UICollectionViewLayout
Основные понятия
6
• UICollectionView
• UICollectionReusableView
• UICollectionViewCell
• Supplementary Views
• Decoration View
• UICollectionViewLayout
• UICollectionViewLayoutAttributes
Основные понятия
6
• UICollectionView
• UICollectionReusableView
• UICollectionViewCell
• Supplementary Views
• Decoration View
• UICollectionViewLayout
• UICollectionViewLayoutAttributes
• UICollectionViewFlowLayout
Supplementary и Decoration view
7
Supplementary и Decoration view
7
• Supplementary Views:
Supplementary и Decoration view
7
• Supplementary Views:
• Для презентации дополнительной информации
Supplementary и Decoration view
7
• Supplementary Views:
• Для презентации дополнительной информации
• Некая аналогия header/footed view на table view
Supplementary и Decoration view
7
• Supplementary Views:
• Для презентации дополнительной информации
• Некая аналогия header/footed view на table view
• Имеют тип:
Supplementary и Decoration view
7
• Supplementary Views:
• Для презентации дополнительной информации
• Некая аналогия header/footed view на table view
• Имеют тип:
• UICollectionElementKindSectionHeader
Supplementary и Decoration view
7
• Supplementary Views:
• Для презентации дополнительной информации
• Некая аналогия header/footed view на table view
• Имеют тип:
• UICollectionElementKindSectionHeader
• UICollectionElementKindSectionFooter
Supplementary и Decoration view
7
• Supplementary Views:
• Для презентации дополнительной информации
• Некая аналогия header/footed view на table view
• Имеют тип:
• UICollectionElementKindSectionHeader
• UICollectionElementKindSectionFooter
• Decoration View:
Supplementary и Decoration view
7
• Supplementary Views:
• Для презентации дополнительной информации
• Некая аналогия header/footed view на table view
• Имеют тип:
• UICollectionElementKindSectionHeader
• UICollectionElementKindSectionFooter
• Decoration View:
• Используется для декораций
Supplementary и Decoration view
7
• Supplementary Views:
• Для презентации дополнительной информации
• Некая аналогия header/footed view на table view
• Имеют тип:
• UICollectionElementKindSectionHeader
• UICollectionElementKindSectionFooter
• Decoration View:
• Используется для декораций
• Задается внутри layout у collection view
Источник данных
UICollectionViewDataSource
8
Источник данных
UICollectionViewDataSource
8
• Количество секций (О)
Источник данных
UICollectionViewDataSource
8
• Количество секций (О)
• Количество элементов в секции
Источник данных
UICollectionViewDataSource
8
• Количество секций (О)
• Количество элементов в секции
• Ячейка для текущего элемента
Источник данных
UICollectionViewDataSource
8
• Количество секций (О)
• Количество элементов в секции
• Ячейка для текущего элемента
• Дополнительный (supplementary) вид для
текущего элемента (О)
UICollectionReusableView
9
UICollectionReusableView
9
• Метод переиспользования
UICollectionReusableView
9
• Метод переиспользования
• Идентификатор переиспользования
UICollectionReusableView
9
• Метод переиспользования
• Идентификатор переиспользования
• Методы для layout
UICollectionViewCell
10
Nil
Nil
UICollectionViewCell
11
UICollectionViewCell
11
• var selected: Bool
UICollectionViewCell
11
• var selected: Bool
• var highlighted: Bool
UICollectionViewDelegate
12
UICollectionViewDelegate
12
• Методы выделения и нажатия на ячейки
UICollectionViewDelegate
12
• Методы выделения и нажатия на ячейки
• Методы отображения ячеек и дополнительных
видов
UICollectionViewDelegate
12
• Методы выделения и нажатия на ячейки
• Методы отображения ячеек и дополнительных
видов
• Методы вспомогательного меню
UICollectionViewDelegate
12
• Методы выделения и нажатия на ячейки
• Методы отображения ячеек и дополнительных
видов
• Методы вспомогательного меню
• Метод для смены layout у коллекции
Layout
13
Layout
13
• UICollectionViewDelegateFlowLayout
Layout
13
• UICollectionViewDelegateFlowLayout
• UICollectionViewLayout
Layout
13
• UICollectionViewDelegateFlowLayout
• UICollectionViewLayout
• UICollectionViewFlowLayout
Layout
14
UICollectionViewDelegateFlowLayout
15
UICollectionViewDelegateFlowLayout
15
• Имеет базовый набор методов выравнивания
UICollectionViewDelegateFlowLayout
15
• Имеет базовый набор методов выравнивания
• Размер ячейки
UICollectionViewDelegateFlowLayout
15
• Имеет базовый набор методов выравнивания
• Размер ячейки
• Отступы для секции
UICollectionViewDelegateFlowLayout
15
• Имеет базовый набор методов выравнивания
• Размер ячейки
• Отступы для секции
• Минимальные отступы между ячейками
UICollectionViewDelegateFlowLayout
15
• Имеет базовый набор методов выравнивания
• Размер ячейки
• Отступы для секции
• Минимальные отступы между ячейками
• Размер дополнительного вида
Размер ячейки
16
Отступы для секции
17
Минимальные отступы между ячейками
18
Custom layouts
19
Custom layouts
19
• Процесс создания полностью своей логики
расположения элементов
Custom layouts
19
• Процесс создания полностью своей логики
расположения элементов
• Свой размер collection view
Custom layouts
19
• Процесс создания полностью своей логики
расположения элементов
• Свой размер collection view
• Может быть прокрутка в оба направления
Custom layouts
19
• Процесс создания полностью своей логики
расположения элементов
• Свой размер collection view
• Может быть прокрутка в оба направления
• Внешнее представление каждого элемента
задается через UICollectionViewLayoutAttributes
Как это работает?
20
Как это работает?
20
• Вызывается invalidateLayout()
Как это работает?
20
• Вызывается invalidateLayout()
• Срабатывает когда вы вызываете его руками или
это делает collection view
Как это работает?
20
• Вызывается invalidateLayout()
• Срабатывает когда вы вызываете его руками или
это делает collection view
• При срабатывании
shouldInvalidateLayoutForBoundsChange()
Как это работает?
20
• Вызывается invalidateLayout()
• Срабатывает когда вы вызываете его руками или
это делает collection view
• При срабатывании
shouldInvalidateLayoutForBoundsChange()
• Вызывается prepareLayout()
Как это работает?
20
• Вызывается invalidateLayout()
• Срабатывает когда вы вызываете его руками или
это делает collection view
• При срабатывании
shouldInvalidateLayoutForBoundsChange()
• Вызывается prepareLayout()
• Запрашивается размер поля
collectionViewContentSize
Как это работает?
20
• Вызывается invalidateLayout()
• Срабатывает когда вы вызываете его руками или
это делает collection view
• При срабатывании
shouldInvalidateLayoutForBoundsChange()
• Вызывается prepareLayout()
• Запрашивается размер поля
collectionViewContentSize
• Вызывается layoutAttributesForElementsInRect()
Схема
21
layoutAttributesForElementsInRect()
22
layoutAttributesForElementsInRect()
22
• layoutAttributesForCellWithIndexPath:
layoutAttributesForElementsInRect()
22
• layoutAttributesForCellWithIndexPath:
• layoutAttributesForSupplementaryViewOfKind:withI
ndexPath:
layoutAttributesForElementsInRect()
22
• layoutAttributesForCellWithIndexPath:
• layoutAttributesForSupplementaryViewOfKind:withI
ndexPath:
• layoutAttributesForDecorationViewOfKind:withInde
xPath:
UICollectionViewLayoutAttributes
23
UICollectionViewLayoutAttributes
23
• frame
UICollectionViewLayoutAttributes
23
• frame
• bounds
UICollectionViewLayoutAttributes
23
• frame
• bounds
• center
UICollectionViewLayoutAttributes
23
• frame
• bounds
• center
• size
UICollectionViewLayoutAttributes
23
• frame
• bounds
• center
• size
• transform3D
UICollectionViewLayoutAttributes
23
• frame
• bounds
• center
• size
• transform3D
• transform
UICollectionViewLayoutAttributes
23
• frame
• bounds
• center
• size
• transform3D
• transform
• alpha
UICollectionViewLayoutAttributes
23
• frame
• bounds
• center
• size
• transform3D
• transform
• alpha
• zIndex
UICollectionViewLayoutAttributes
23
• frame
• bounds
• center
• size
• transform3D
• transform
• alpha
• zIndex
• hidden
Пару слов о редактировании
24
Пару слов о редактировании
24
• initialLayoutAttributesForAppearingItemAtIndexPath
Пару слов о редактировании
24
• initialLayoutAttributesForAppearingItemAtIndexPath
• finalLayoutAttributesForDisappearingItemAtIndexPath
Пару слов о редактировании
24
• initialLayoutAttributesForAppearingItemAtIndexPath
• finalLayoutAttributesForDisappearingItemAtIndexPath
• Такие же методы для Supplementary и Decoration
view
UICollectionView — Александр Зимин
Спасибо за внимание
Зимин Александр
azimin@me.com
@ziminalex
Ad

Recommended

PDF
Эффективность на рубеже UITableView — Александр Зимин
CocoaHeads
PDF
Интуит. Разработка приложений для iOS. Лекция 5. Сложные Views
Глеб Тарасов
PDF
DevConf 2012 - Yii, его разработка и Yii2
Alexander Makarov
PDF
UWDC 2013, Yii2
Alexander Makarov
PDF
"Рекомендации по проектированию API" — Марина Степанова, Яндекс
Yandex
PDF
UWDC 2013, Как мы используем Yii
Alexander Makarov
PPT
Therenderapi 120913041852-phpapp02
Victoria Sultanovska
PDF
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
Yandex
PDF
Александр Зимин — Анимация в iOS
CocoaHeads
PDF
Александр Зимин (Alexander Zimin) — UIViewController, откройся!
CocoaHeads
PDF
Push Notifications
CocoaHeads
PDF
#MBLTdev: Разработка на Swift (Ash Furrow)
e-Legion
PDF
Александр Зимин — Мобильные интерфейсы будущего
CocoaHeads
PDF
iOS 7. Новые концепции и новые средства
Any Void
PDF
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
CocoaHeads
PDF
Дизайнер, разработчик, нет конфликта, нет драмы — Евгения Малкова
CocoaHeads
PDF
Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"
IT Event
PDF
iOS-05_2-UIKit
Noveo
PPT
Talks on collections
Dmitry Zakharov
PDF
03 коллекции
Noveo
PDF
UI-тесты в iOS-проекте / Михаил Домрачев (Improve Digital)
Ontico
PDF
Фундаментальные основы разработки под iOS. Павел Тайкало
Stanfy
PDF
Четвертое занятие курса iOS-разработки в ГУ-ВШЭ
Oleg Parinov
KEY
Squeek School #3
Sergey Pronin
PDF
Влад Ковташ — Yap Database
CocoaHeads
PDF
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
CocoaHeads
PDF
Встреча №9. AudioBus: Эволюция звука, Данил Пархоменко
CocoaHeads
PDF
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
CocoaHeads
PDF
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
CocoaHeads
PPTX
Встреча №8. Использование возможностей iOS 7 SDK, Ксения Покровская
CocoaHeads

More Related Content

Viewers also liked (8)

PDF
Александр Зимин — Анимация в iOS
CocoaHeads
PDF
Александр Зимин (Alexander Zimin) — UIViewController, откройся!
CocoaHeads
PDF
Push Notifications
CocoaHeads
PDF
#MBLTdev: Разработка на Swift (Ash Furrow)
e-Legion
PDF
Александр Зимин — Мобильные интерфейсы будущего
CocoaHeads
PDF
iOS 7. Новые концепции и новые средства
Any Void
PDF
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
CocoaHeads
PDF
Дизайнер, разработчик, нет конфликта, нет драмы — Евгения Малкова
CocoaHeads
Александр Зимин — Анимация в iOS
CocoaHeads
Александр Зимин (Alexander Zimin) — UIViewController, откройся!
CocoaHeads
Push Notifications
CocoaHeads
#MBLTdev: Разработка на Swift (Ash Furrow)
e-Legion
Александр Зимин — Мобильные интерфейсы будущего
CocoaHeads
iOS 7. Новые концепции и новые средства
Any Void
Встреча №9. Будущее паттерна MVVM в iOS приложениях, Денис Лебедев
CocoaHeads
Дизайнер, разработчик, нет конфликта, нет драмы — Евгения Малкова
CocoaHeads

Similar to UICollectionView — Александр Зимин (8)

PDF
Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"
IT Event
PDF
iOS-05_2-UIKit
Noveo
PPT
Talks on collections
Dmitry Zakharov
PDF
03 коллекции
Noveo
PDF
UI-тесты в iOS-проекте / Михаил Домрачев (Improve Digital)
Ontico
PDF
Фундаментальные основы разработки под iOS. Павел Тайкало
Stanfy
PDF
Четвертое занятие курса iOS-разработки в ГУ-ВШЭ
Oleg Parinov
KEY
Squeek School #3
Sergey Pronin
Александр Зимин "Нестандартная верстка для стандартных компонентов в iOS"
IT Event
iOS-05_2-UIKit
Noveo
Talks on collections
Dmitry Zakharov
03 коллекции
Noveo
UI-тесты в iOS-проекте / Михаил Домрачев (Improve Digital)
Ontico
Фундаментальные основы разработки под iOS. Павел Тайкало
Stanfy
Четвертое занятие курса iOS-разработки в ГУ-ВШЭ
Oleg Parinov
Squeek School #3
Sergey Pronin
Ad

More from CocoaHeads (9)

PDF
Влад Ковташ — Yap Database
CocoaHeads
PDF
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
CocoaHeads
PDF
Встреча №9. AudioBus: Эволюция звука, Данил Пархоменко
CocoaHeads
PDF
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
CocoaHeads
PDF
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
CocoaHeads
PPTX
Встреча №8. Использование возможностей iOS 7 SDK, Ксения Покровская
CocoaHeads
PDF
Встреча №5. Взаимодействие между дизайнерами и разработчиками, Евгений Беляев
CocoaHeads
PDF
Встреча №5. Можно ли сделать дизайн без дизайнера? Александр Киров
CocoaHeads
PDF
Встреча №5. Звук и ресурсы iOS в realtime, Константин Платов
CocoaHeads
Влад Ковташ — Yap Database
CocoaHeads
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
CocoaHeads
Встреча №9. AudioBus: Эволюция звука, Данил Пархоменко
CocoaHeads
Встреча №8. NSIncrementalStore, или как заставить Core Data варить ваш собств...
CocoaHeads
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
CocoaHeads
Встреча №8. Использование возможностей iOS 7 SDK, Ксения Покровская
CocoaHeads
Встреча №5. Взаимодействие между дизайнерами и разработчиками, Евгений Беляев
CocoaHeads
Встреча №5. Можно ли сделать дизайн без дизайнера? Александр Киров
CocoaHeads
Встреча №5. Звук и ресурсы iOS в realtime, Константин Платов
CocoaHeads
Ad

UICollectionView — Александр Зимин