parallactic collection views

124

Upload: rene-cacheaux

Post on 08-May-2015

3.944 views

Category:

Technology


0 download

DESCRIPTION

360iDev session on adding parallax effect to UICollectionView layouts.

TRANSCRIPT

Page 1: Parallactic Collection Views
Page 2: Parallactic Collection Views

Parallactic Collection Views

How to add depth into iOS user interfaces

Page 3: Parallactic Collection Views
Page 4: Parallactic Collection Views

UI Collection View

UICollectionViewDataSource

UICollectionViewCellUICollectionViewCellUICollectionViewCellUICollectionViewCellUICollectionReusableView

UICollectionViewLayout

UICollectionReusableViewUICollectionReusableViewUICollectionReusableView

UICollectionView

UICollectionViewDelegate

Page 5: Parallactic Collection Views

Truly Great Apps

Page 6: Parallactic Collection Views

What makes an app

truly great?

Page 7: Parallactic Collection Views

Fit in

Page 8: Parallactic Collection Views

Magical

Page 9: Parallactic Collection Views

AmazingFirst Impressions

Page 10: Parallactic Collection Views

Experience Matters

Page 11: Parallactic Collection Views

Let’s go back in time

Page 12: Parallactic Collection Views
Page 13: Parallactic Collection Views
Page 14: Parallactic Collection Views

AP

Page 15: Parallactic Collection Views

Horizontal Navigation

Page 16: Parallactic Collection Views

And now...

Page 17: Parallactic Collection Views

iOS 7 is Coming

Page 18: Parallactic Collection Views
Page 19: Parallactic Collection Views

Opportunity

Page 20: Parallactic Collection Views

Design for iOS 7

Page 21: Parallactic Collection Views

Depth

Page 22: Parallactic Collection Views

Navigation

Page 23: Parallactic Collection Views

Tools

We Need

Page 24: Parallactic Collection Views

UICollectionView

Page 25: Parallactic Collection Views
Page 26: Parallactic Collection Views

UICollectionView

iOS 7

Page 27: Parallactic Collection Views

How to add depth?

Page 28: Parallactic Collection Views

parallax

Page 29: Parallactic Collection Views

Examples

Page 31: Parallactic Collection Views

Not just cool...

Page 32: Parallactic Collection Views

How Parallax Works

Page 33: Parallactic Collection Views

Relative Motion

Page 34: Parallactic Collection Views

You can do this with UICollection View

Page 35: Parallactic Collection Views

Why Collection View?

Page 36: Parallactic Collection Views

In this session you will:

Page 37: Parallactic Collection Views

Master Adding Parallax to Your Layouts

Page 38: Parallactic Collection Views

Let’s Dive In

Page 39: Parallactic Collection Views

What are we building?

Page 40: Parallactic Collection Views
Page 41: Parallactic Collection Views

The Background

Page 42: Parallactic Collection Views

Background View1

Page 43: Parallactic Collection Views

UI Collection View

UICollectionViewDataSource

UICollectionViewCellUICollectionViewCellUICollectionViewCellUICollectionViewCellUICollectionReusableView

UICollectionViewLayout

UICollectionReusableViewUICollectionReusableViewUICollectionReusableView

UICollectionView

UICollectionViewDelegate

Page 44: Parallactic Collection Views

Calculating Layout Metrics

Page 45: Parallactic Collection Views

Elements in Rect

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {

Page 46: Parallactic Collection Views

Title1

Title2

Title3

Content Content

Content Content

Content

RectElements in Rect

Page 47: Parallactic Collection Views

1

2

3

Calculate

Test

Add

Page 48: Parallactic Collection Views

Layout Attributes

- (UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString *)decorationViewKind

atIndexPath:(NSIndexPath *)indexPath

Page 49: Parallactic Collection Views

Anchor Background2

Page 50: Parallactic Collection Views

UICollectionView

UIScrollView

UIView

UIResponder

NSObject

Class Hierarchy

Page 51: Parallactic Collection Views

Scroll View Mechanics

Page 52: Parallactic Collection Views

Scroll ViewMechanics

Scroll View Contents

BOUNDS

Page 53: Parallactic Collection Views

Scroll ViewMechanics

Scroll View Contents

BOUNDS

Page 54: Parallactic Collection Views

Anchor

Page 55: Parallactic Collection Views

AnchoringSubviews

Scroll View Contents

Subview

BOUNDS

Page 56: Parallactic Collection Views

AnchoringSubviews

Scroll View Contents

Subview

BOUNDS

Page 57: Parallactic Collection Views

Need New Layout Metrics on Scroll

Page 58: Parallactic Collection Views

Invalidate Layout

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {

Page 59: Parallactic Collection Views

InvalidateLayout

Scroll View Contents

Subview

BOUNDS

-invalidateLayout-invalidateLayout-invalidateLayout-invalidateLayout-invalidateLayout

Page 60: Parallactic Collection Views

New Metrics On Invalidation

Page 61: Parallactic Collection Views

Layout Attributes

- (UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString *)decorationViewKind

atIndexPath:(NSIndexPath *)indexPath

Page 62: Parallactic Collection Views

Parallax3

Page 63: Parallactic Collection Views

It’s about to get complicated

Page 64: Parallactic Collection Views

Layout Attributes

- (UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString *)decorationViewKind

atIndexPath:(NSIndexPath *)indexPath

Page 65: Parallactic Collection Views

Parallactic Offset

Page 66: Parallactic Collection Views

Percentage Based

Page 67: Parallactic Collection Views

Content Offset

Scroll View Contents

BOUNDS

0%

100%

50%

Page 68: Parallactic Collection Views

Content Offset

Scroll View Contents

BOUNDS

0%

100%

50%

Page 69: Parallactic Collection Views

Content Offset

Scroll View Contents

BOUNDS

100%Bounds Height

Page 70: Parallactic Collection Views

Content Offset

Scroll View Contents

BOUNDS

100%

Content Size Height

Page 71: Parallactic Collection Views

Content Offset

Scroll View Contents

BOUNDS

100%

Distance to Travel

Page 72: Parallactic Collection Views

Percentage

CGFloat percentageComplete = self.collectionView.contentOffset.y / (self.collectionView.contentSize.height - self.collectionView.bounds.size.height);

Page 73: Parallactic Collection Views

Calculating Parallactic Offset

Page 74: Parallactic Collection Views

DefineOffset

Parallaxing BackgroundBOUNDS

Offset

0%

Page 75: Parallactic Collection Views

DefineOffset

Parallaxing Background

BOUNDS

Offset

50%

Page 76: Parallactic Collection Views

DefineOffset

Parallaxing Background

BOUNDS

Offset

100%

Page 77: Parallactic Collection Views

Offset

CGFloat parallaxShift = 6.0;

CGFloat offset = ([self scrollPercentageComplete] * (2 * parallaxShift)) - parallaxShift;

Page 78: Parallactic Collection Views

1

2

3

Inspect Collection View Content Offset

Calculate Current Percentage

Calculate Current Parallactic Offset

4 Apply the Parallax Frame

Page 79: Parallactic Collection Views

Build It

Page 80: Parallactic Collection Views

We’veGot

Parallax

Page 81: Parallactic Collection Views

The Cells

Page 82: Parallactic Collection Views

Similar

Page 83: Parallactic Collection Views

Build It

Page 84: Parallactic Collection Views

YOUNow

can Parallax

Page 85: Parallactic Collection Views

One more thing...

Page 86: Parallactic Collection Views

Parallactic rainForest

Page 87: Parallactic Collection Views

Inspiration

Page 89: Parallactic Collection Views

Demo

Page 90: Parallactic Collection Views

ARCHITECTURE

Page 91: Parallactic Collection Views

Parallaxing Cell

Banner

Parallaxing Cell

Banner

Components

Page 92: Parallactic Collection Views

Anchor

Page 93: Parallactic Collection Views

Cell

Scroll View Contents

Cell 2Cell

Banner

Banner

Banner

Banner

Page 94: Parallactic Collection Views

Scroll View Contents

Banner

CellCell 2CellBanner

Banner

Banner

Page 95: Parallactic Collection Views

Scroll View Contents

Banner

CellCell 2Cell

Banner

Banner

Banner

Page 96: Parallactic Collection Views

Scroll View Contents

Banner

CellCell 2Cell

Banner

Banner

Banner

Page 97: Parallactic Collection Views

Scroll View Contents

Banner

CellCell 2Cell

Banner

Banner

Banner

Page 98: Parallactic Collection Views

Crop

Page 99: Parallactic Collection Views

Scroll View Contents

Cell

Banner

Banner

Banner

Banner

Page 100: Parallactic Collection Views

Scroll View Contents

Cell

Banner

Banner

Banner

Banner

Page 101: Parallactic Collection Views

Scroll View Contents

Cell 2Cell

Banner

Banner

Banner

Banner

Page 102: Parallactic Collection Views

Cell 2

Scroll View Contents

Cell

Banner

Banner

Banner

Banner

Page 103: Parallactic Collection Views

Scroll View Contents

Cell 2

Cell

Banner

Banner

Banner

Banner

Page 104: Parallactic Collection Views

Scroll View Contents

Cell 2

Banner

Banner

Banner

Banner

Page 105: Parallactic Collection Views

Scroll View Contents

Cell 3Cell 2

Banner

Banner

Banner

Banner

Page 106: Parallactic Collection Views

Scroll View Contents

Cell 3

Cell 2

Banner

Banner

Banner

Banner

Page 107: Parallactic Collection Views

Scroll View Contents

Cell 3

Cell 2

Banner

Banner

Banner

Banner

Page 108: Parallactic Collection Views

Scroll View Contents

Cell 3

Banner

Banner

Banner

Banner

Page 109: Parallactic Collection Views

Parallax

Page 110: Parallactic Collection Views

DefineOffset

Scroll View Contents

Banner

Banner

Parallaxing Cell

Banner

Banner

BOUNDS

Page 111: Parallactic Collection Views

DefineOffset

Parallaxing Cell

BOUNDS

Page 112: Parallactic Collection Views

DefineOffset

Parallaxing Cell

BOUNDS

Offset

0%

Page 113: Parallactic Collection Views

DefineOffset

Parallaxing Cell

BOUNDS

Offset

50%

Page 114: Parallactic Collection Views

DefineOffset

Parallaxing CellBOUNDS

Offset

100%

Page 115: Parallactic Collection Views

So that’s parallax

Page 116: Parallactic Collection Views

Why do this?

Page 117: Parallactic Collection Views

Fit In

Page 118: Parallactic Collection Views

Get Featured by Apple

Page 119: Parallactic Collection Views

And...

Page 120: Parallactic Collection Views

delight your users

Page 121: Parallactic Collection Views

Resources

Page 122: Parallactic Collection Views

/RCacheaux/Parallax

Page 124: Parallactic Collection Views