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

98
UICollectionView Зимин Александр iOS разработчик UX дизайнер

Upload: cocoaheads-moscow

Post on 18-Jul-2015

238 views

Category:

Software


2 download

TRANSCRIPT

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

UICollectionView

Зимин Александр iOS разработчик

UX дизайнер

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

Что будет сегодня

2

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

Что будет сегодня

2

• Что такое collection view

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

Что будет сегодня

2

• Что такое collection view• Базовое устройство

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

Что будет сегодня

2

• Что такое collection view• Базовое устройство• Ячейки

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

Что будет сегодня

2

• Что такое collection view• Базовое устройство• Ячейки• Протоколы collection view

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

Что будет сегодня

2

• Что такое collection view• Базовое устройство• Ячейки• Протоколы collection view• Layout у collection view

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

Чего не будет

3

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

Чего не будет

3

• Редактирование контента

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

Чего не будет

3

• Редактирование контента• Смена layout у collection view

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

Чего не будет

3

• Редактирование контента• Смена layout у collection view• Custom layout attributes

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

Чего не будет

3

• Редактирование контента• Смена layout у collection view• Custom layout attributes• UIDynamics

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

UICollectionView

44

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

55

UICollectionView

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

Основные понятия

6

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

Основные понятия

6

• UICollectionView

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

Основные понятия

6

• UICollectionView• UICollectionReusableView

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

Основные понятия

6

• UICollectionView• UICollectionReusableView • UICollectionViewCell

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

Основные понятия

6

• UICollectionView• UICollectionReusableView • UICollectionViewCell• Supplementary Views

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

Основные понятия

6

• UICollectionView• UICollectionReusableView • UICollectionViewCell• Supplementary Views• Decoration View

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

Основные понятия

6

• UICollectionView• UICollectionReusableView • UICollectionViewCell• Supplementary Views• Decoration View • UICollectionViewLayout

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

Основные понятия

6

• UICollectionView• UICollectionReusableView • UICollectionViewCell• Supplementary Views• Decoration View • UICollectionViewLayout• UICollectionViewLayoutAttributes

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

Основные понятия

6

• UICollectionView• UICollectionReusableView • UICollectionViewCell• Supplementary Views• Decoration View • UICollectionViewLayout• UICollectionViewLayoutAttributes• UICollectionViewFlowLayout

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

Supplementary и Decoration view

7

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

Supplementary и Decoration view

7

• Supplementary Views:

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

Supplementary и Decoration view

7

• Supplementary Views:• Для презентации дополнительной информации

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

Supplementary и Decoration view

7

• Supplementary Views:• Для презентации дополнительной информации• Некая аналогия header/footed view на table view

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

Supplementary и Decoration view

7

• Supplementary Views:• Для презентации дополнительной информации• Некая аналогия header/footed view на table view• Имеют тип:

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

Supplementary и Decoration view

7

• Supplementary Views:• Для презентации дополнительной информации• Некая аналогия header/footed view на table view• Имеют тип:

• UICollectionElementKindSectionHeader

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

Supplementary и Decoration view

7

• Supplementary Views:• Для презентации дополнительной информации• Некая аналогия header/footed view на table view• Имеют тип:

• UICollectionElementKindSectionHeader• UICollectionElementKindSectionFooter

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

Supplementary и Decoration view

7

• Supplementary Views:• Для презентации дополнительной информации• Некая аналогия header/footed view на table view• Имеют тип:

• UICollectionElementKindSectionHeader• UICollectionElementKindSectionFooter

• Decoration View:

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

Supplementary и Decoration view

7

• Supplementary Views:• Для презентации дополнительной информации• Некая аналогия header/footed view на table view• Имеют тип:

• UICollectionElementKindSectionHeader• UICollectionElementKindSectionFooter

• Decoration View: • Используется для декораций

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

Supplementary и Decoration view

7

• Supplementary Views:• Для презентации дополнительной информации• Некая аналогия header/footed view на table view• Имеют тип:

• UICollectionElementKindSectionHeader• UICollectionElementKindSectionFooter

• Decoration View: • Используется для декораций• Задается внутри layout у collection view

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

Источник данных UICollectionViewDataSource

8

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

Источник данных UICollectionViewDataSource

8

• Количество секций (О)

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

Источник данных UICollectionViewDataSource

8

• Количество секций (О)• Количество элементов в секции

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

Источник данных UICollectionViewDataSource

8

• Количество секций (О)• Количество элементов в секции• Ячейка для текущего элемента

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

Источник данных UICollectionViewDataSource

8

• Количество секций (О)• Количество элементов в секции• Ячейка для текущего элемента• Дополнительный (supplementary) вид для текущего элемента (О)

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

UICollectionReusableView

9

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

UICollectionReusableView

9

• Метод переиспользования

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

UICollectionReusableView

9

• Метод переиспользования• Идентификатор переиспользования

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

UICollectionReusableView

9

• Метод переиспользования• Идентификатор переиспользования• Методы для layout

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

UICollectionViewCell

10

NilNil

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

UICollectionViewCell

11

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

UICollectionViewCell

11

• var selected: Bool

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

UICollectionViewCell

11

• var selected: Bool• var highlighted: Bool

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

UICollectionViewDelegate

12

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

UICollectionViewDelegate

12

• Методы выделения и нажатия на ячейки

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

UICollectionViewDelegate

12

• Методы выделения и нажатия на ячейки• Методы отображения ячеек и дополнительных видов

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

UICollectionViewDelegate

12

• Методы выделения и нажатия на ячейки• Методы отображения ячеек и дополнительных видов

• Методы вспомогательного меню

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

UICollectionViewDelegate

12

• Методы выделения и нажатия на ячейки• Методы отображения ячеек и дополнительных видов

• Методы вспомогательного меню• Метод для смены layout у коллекции

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

Layout

13

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

Layout

13

• UICollectionViewDelegateFlowLayout

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

Layout

13

• UICollectionViewDelegateFlowLayout• UICollectionViewLayout

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

Layout

13

• UICollectionViewDelegateFlowLayout• UICollectionViewLayout• UICollectionViewFlowLayout

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

Layout

14

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

UICollectionViewDelegateFlowLayout

15

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

UICollectionViewDelegateFlowLayout

15

• Имеет базовый набор методов выравнивания

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

UICollectionViewDelegateFlowLayout

15

• Имеет базовый набор методов выравнивания• Размер ячейки

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

UICollectionViewDelegateFlowLayout

15

• Имеет базовый набор методов выравнивания• Размер ячейки• Отступы для секции

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

UICollectionViewDelegateFlowLayout

15

• Имеет базовый набор методов выравнивания• Размер ячейки• Отступы для секции• Минимальные отступы между ячейками

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

UICollectionViewDelegateFlowLayout

15

• Имеет базовый набор методов выравнивания• Размер ячейки• Отступы для секции• Минимальные отступы между ячейками• Размер дополнительного вида

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

Размер ячейки

16

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

Отступы для секции

17

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

Минимальные отступы между ячейками

18

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

Custom layouts

19

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

Custom layouts

19

• Процесс создания полностью своей логики расположения элементов

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

Custom layouts

19

• Процесс создания полностью своей логики расположения элементов

• Свой размер collection view

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

Custom layouts

19

• Процесс создания полностью своей логики расположения элементов

• Свой размер collection view• Может быть прокрутка в оба направления

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

Custom layouts

19

• Процесс создания полностью своей логики расположения элементов

• Свой размер collection view• Может быть прокрутка в оба направления

• Внешнее представление каждого элемента задается через UICollectionViewLayoutAttributes

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

Как это работает?

20

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

Как это работает?

20

• Вызывается invalidateLayout()

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

Как это работает?

20

• Вызывается invalidateLayout()• Срабатывает когда вы вызываете его руками или это делает collection view

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

Как это работает?

20

• Вызывается invalidateLayout()• Срабатывает когда вы вызываете его руками или это делает collection view

• При срабатывании shouldInvalidateLayoutForBoundsChange()

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

Как это работает?

20

• Вызывается invalidateLayout()• Срабатывает когда вы вызываете его руками или это делает collection view

• При срабатывании shouldInvalidateLayoutForBoundsChange()

• Вызывается prepareLayout()

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

Как это работает?

20

• Вызывается invalidateLayout()• Срабатывает когда вы вызываете его руками или это делает collection view

• При срабатывании shouldInvalidateLayoutForBoundsChange()

• Вызывается prepareLayout()• Запрашивается размер поля

collectionViewContentSize

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

Как это работает?

20

• Вызывается invalidateLayout()• Срабатывает когда вы вызываете его руками или это делает collection view

• При срабатывании shouldInvalidateLayoutForBoundsChange()

• Вызывается prepareLayout()• Запрашивается размер поля

collectionViewContentSize• Вызывается layoutAttributesForElementsInRect()

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

Схема

21

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

layoutAttributesForElementsInRect()

22

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

layoutAttributesForElementsInRect()

22

• layoutAttributesForCellWithIndexPath:

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

layoutAttributesForElementsInRect()

22

• layoutAttributesForCellWithIndexPath:• layoutAttributesForSupplementaryViewOfKind:withI

ndexPath:

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

layoutAttributesForElementsInRect()

22

• layoutAttributesForCellWithIndexPath:• layoutAttributesForSupplementaryViewOfKind:withI

ndexPath:• layoutAttributesForDecorationViewOfKind:withInde

xPath:

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

UICollectionViewLayoutAttributes

23

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

UICollectionViewLayoutAttributes

23

• frame

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

UICollectionViewLayoutAttributes

23

• frame• bounds

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

UICollectionViewLayoutAttributes

23

• frame• bounds• center

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

UICollectionViewLayoutAttributes

23

• frame• bounds• center• size

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

UICollectionViewLayoutAttributes

23

• frame• bounds• center• size• transform3D

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

UICollectionViewLayoutAttributes

23

• frame• bounds• center• size• transform3D• transform

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

UICollectionViewLayoutAttributes

23

• frame• bounds• center• size• transform3D• transform• alpha

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

UICollectionViewLayoutAttributes

23

• frame• bounds• center• size• transform3D• transform• alpha• zIndex

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

UICollectionViewLayoutAttributes

23

• frame• bounds• center• size• transform3D• transform• alpha• zIndex• hidden

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

Пару слов о редактировании

24

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

Пару слов о редактировании

24

• initialLayoutAttributesForAppearingItemAtIndexPath

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

Пару слов о редактировании

24

• initialLayoutAttributesForAppearingItemAtIndexPath• finalLayoutAttributesForDisappearingItemAtIndexPath

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

Пару слов о редактировании

24

• initialLayoutAttributesForAppearingItemAtIndexPath• finalLayoutAttributesForDisappearingItemAtIndexPath• Такие же методы для Supplementary и Decoration

view

Page 97: UICollectionView — Александр Зимин
Page 98: UICollectionView — Александр Зимин

Спасибо за внимание

Зимин Александр [email protected]

@ziminalex