Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009...

114
These are confidential sessions—please refrain from streaming, blogging, or taking pictures Session 217 Exploring Scroll Views in iOS 7 Josh Shaffer and Eliza Block iOS Software

Transcript of Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009...

Page 1: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

These are confidential sessions—please refrain from streaming, blogging, or taking pictures

Session 217

Exploring Scroll Views in iOS 7

Josh Shaffer and Eliza BlockiOS Software

Page 2: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 3: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 4: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 5: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 6: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 7: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 8: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 9: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 10: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 11: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 12: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 13: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 14: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 15: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 16: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 17: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 18: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 19: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 20: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 21: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Nested Scroll Views

Page 22: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 23: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 24: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 25: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 26: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 27: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 28: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 29: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 30: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 31: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 32: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 33: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 34: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

scrollViewDidScroll:

Page 35: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Pulling the Parent Scroll View

}- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

Page 36: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Pulling the Parent Scroll View

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { determine delta beyond catch point

Page 37: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Pulling the Parent Scroll View

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { determine delta beyond catch point

Page 38: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Pulling the Parent Scroll View

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { determine delta beyond catch point adjust parent contentOffset by delta

Page 39: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Pulling the Parent Scroll View

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { determine delta beyond catch point adjust parent contentOffset by delta

Page 40: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Demo

Eliza Block

Page 41: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 42: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 43: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 44: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 45: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 46: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 47: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 48: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 49: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 50: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 51: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 52: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 53: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 54: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 55: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 56: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 57: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 58: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 59: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 60: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 61: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 62: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 63: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 64: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Pulling the Parent Scroll View

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { determine delta beyond catch point adjust parent contentOffset by delta

Page 65: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Pulling the Parent Scroll View

}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { determine delta beyond catch point adjust parent contentOffset by delta translate child by delta

Page 66: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Demo

Eliza Block

Page 67: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Scrolling with UIKit Dynamics

Page 68: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 69: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 70: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 71: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 72: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 73: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 74: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Setup

Page 75: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Setup

• Subclass UICollectionViewFlowLayout

Page 76: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Setup

• Subclass UICollectionViewFlowLayout• Create UIDynamicAnimator

Page 77: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Setup

• Subclass UICollectionViewFlowLayout• Create UIDynamicAnimator• Create UIAttachmentBehavior for each item

Page 78: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Setup

• Subclass UICollectionViewFlowLayout• Create UIDynamicAnimator• Create UIAttachmentBehavior for each item• Stretch the attachments when scrolling

Page 79: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Subclass UICollectionViewFlowLayout

}

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

@implementation DynamicCollectionViewFlowLayout

- (void)prepareLayout {

}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath: (NSIndexPath *)indexPath {}

@end

Page 80: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Subclass UICollectionViewFlowLayout

}

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

@implementation DynamicCollectionViewFlowLayout

- (void)prepareLayout {

}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath: (NSIndexPath *)indexPath {}

@end

create UICollectionViewLayoutAttributes

Page 81: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Subclass UICollectionViewFlowLayout

}

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

@implementation DynamicCollectionViewFlowLayout

- (void)prepareLayout {

}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath: (NSIndexPath *)indexPath {}

@end

create UICollectionViewLayoutAttributes

Page 82: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Subclass UICollectionViewFlowLayout

}

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

@implementation DynamicCollectionViewFlowLayout

- (void)prepareLayout {

}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath: (NSIndexPath *)indexPath {}

@end

create UICollectionViewLayoutAttributes create UIDynamicAnimator and UIAttachmentBehaviors

Page 83: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Subclass UICollectionViewFlowLayout

}

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

@implementation DynamicCollectionViewFlowLayout

- (void)prepareLayout {

}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath: (NSIndexPath *)indexPath {}

@end

create UICollectionViewLayoutAttributes create UIDynamicAnimator and UIAttachmentBehaviors

Page 84: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Subclass UICollectionViewFlowLayout

}

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

@implementation DynamicCollectionViewFlowLayout

- (void)prepareLayout {

}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath: (NSIndexPath *)indexPath {}

@end

create UICollectionViewLayoutAttributes create UIDynamicAnimator and UIAttachmentBehaviors

return [_dynamicAnimator itemsInRect:rect];

Page 85: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Subclass UICollectionViewFlowLayout

}

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

@implementation DynamicCollectionViewFlowLayout

- (void)prepareLayout {

}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath: (NSIndexPath *)indexPath {}

@end

create UICollectionViewLayoutAttributes create UIDynamicAnimator and UIAttachmentBehaviors

return [_dynamicAnimator itemsInRect:rect];

Page 86: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Subclass UICollectionViewFlowLayout

}

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

@implementation DynamicCollectionViewFlowLayout

- (void)prepareLayout {

}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath: (NSIndexPath *)indexPath {

}

@end

create UICollectionViewLayoutAttributes create UIDynamicAnimator and UIAttachmentBehaviors

return [_dynamicAnimator itemsInRect:rect];

return [_dynamicAnimator layoutAttributesForCellAtIndexPath:indexPath];

Page 87: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Subclass UICollectionViewFlowLayout

}

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

@implementation DynamicCollectionViewFlowLayout

- (void)prepareLayout {

}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath: (NSIndexPath *)indexPath {

}

@end

create UICollectionViewLayoutAttributes create UIDynamicAnimator and UIAttachmentBehaviors

return [_dynamicAnimator itemsInRect:rect];

return [_dynamicAnimator layoutAttributesForCellAtIndexPath:indexPath];

Page 88: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 89: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

scrollViewDidScroll:

Page 90: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

scrollViewDidScroll:

Page 91: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 92: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

contentOffset == bounds.origin

Page 93: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Stretch the Attachments

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {}

Page 94: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Stretch the Attachments

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {

} CGFloat delta = newBounds.origin.y - self.collectionView.bounds.origin.y

Page 95: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Stretch the Attachments

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {

} CGFloat delta = newBounds.origin.y - self.collectionView.bounds.origin.y

Page 96: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Stretch the Attachments

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {

}

CGFloat delta = newBounds.origin.y - self.collectionView.bounds.origin.y shift layout attribute positions by delta

Page 97: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Stretch the Attachments

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {

}

CGFloat delta = newBounds.origin.y - self.collectionView.bounds.origin.y shift layout attribute positions by delta

Page 98: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Stretch the Attachments

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {

}

CGFloat delta = newBounds.origin.y - self.collectionView.bounds.origin.y shift layout attribute positions by delta notify UIDynamicAnimator

Page 99: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Stretch the Attachments

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {

}

CGFloat delta = newBounds.origin.y - self.collectionView.bounds.origin.y shift layout attribute positions by delta notify UIDynamicAnimator

Page 100: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Demo

Eliza Block

Page 101: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 102: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 103: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 104: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 105: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 106: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo
Page 107: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Demo

Eliza Block

Page 108: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

2009 – Mastering iPhone Scroll Views

UIScrollView Session History

2010 – Designing Apps with Scroll Views2011 – Advanced Scroll View Techniques2012 – Enhancing User Experience with Scroll Views2013 – Exploring Scroll Views in iOS 7

Page 109: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

UIScrollView Session History

2010 – Designing Apps with Scroll Views

2011 – Advanced Scroll View Techniques

2012 – Enhancing User Experience with Scroll Views

2009 – Mastering iPhone Scroll Views

2013 – Exploring Scroll Views in iOS 7

Page 110: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

UIScrollView Session History

2010 – Designing Apps with Scroll Views

2011 – Advanced Scroll View Techniques

2012 – Enhancing User Experience with Scroll Views

2009 – Mastering iPhone Scroll Views

2013 – Exploring Scroll Views in iOS 7

basics

photo browsing, tiling

infinite scrolling, stationary views, interaction with gestures

photo browsing 2.0, scrolling with OpenGL, custom deceleration

nested scroll views, integration with dynamics

Page 111: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

More Information

Jake BehrensApp Frameworks [email protected]

DocumentationScroll View Programming Guide for iOShttp://developer.apple.com/ios

Apple Developer Forumshttp://devforums.apple.com

Page 112: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Getting Started with UIKit Dynamics PresidioTuesday 4:30PM

Related Sessions

Building User Interfaces for iOS 7 PresidioTuesday 10:15AM

Advanced Techniques with UIKit Dynamics PresidioThursday 3:15PM

Page 113: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo

Labs

Cocoa Touch Animation Lab Frameworks Lab BThursday 2:00PM

Scroll View, Collection View, and Table View on iOS Lab Frameworks Lab BThursday 11:30AM

Cocoa Touch Lab Frameworks Lab BFriday 9:00AM

Page 114: Exploring Scroll Views in iOS 7...2012 –!Enhancing User Experience with Scroll Views 2009 –!Mastering iPhone Scroll Views 2013 –!Exploring Scroll Views in iOS 7 basics photo