multitasking

87
Multitasking The Hard Way @micheletitolo Lead Software Engineer, Capital One

Upload: michele-titolo

Post on 17-Jan-2017

235 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Multitasking

Multitasking The Hard Way@micheletitoloLead Software Engineer, Capital One

Page 2: Multitasking

What We’ll CoverWhat are Multitasking and Adaptivity?Creating AdaptivityTips, Tricks, and Gotchas

Page 3: Multitasking

What Is Multitasking?

Page 4: Multitasking
Page 5: Multitasking

Adaptivity

Page 6: Multitasking
Page 7: Multitasking
Page 8: Multitasking

Compact

Compact

Regular

Regular

✔✔

x

Page 9: Multitasking

Creating Adaptivity

Page 10: Multitasking

• Launch.storyboard

• Full iPad rotation

• UITraitCollection

Mechanics

Page 11: Multitasking

Apps Must Use A Launch.Storyboard

Page 12: Multitasking

Apps Must Allow Full RotationSetting in Info.plist

Page 13: Multitasking

UITraitCollectionhorizontalSizeClassverticalSizeClass

Page 14: Multitasking

UITraitEnvironmentUIContentContainer

Page 15: Multitasking

UITraitEnvironmenttraitCollection traitCollectionDidChange

Page 16: Multitasking

UIView UIViewController UIPresentationController

Page 17: Multitasking

UIContentContainerviewWillTransitionToSize willTransitionToTraitCollection

Page 18: Multitasking

UIViewController UIPresentationController

Page 19: Multitasking

Different Use Cases

Page 20: Multitasking

Responding To Changes

Page 21: Multitasking

Multitasking Order

Page 22: Multitasking
Page 23: Multitasking

•applicationWillResignActive

•willTransitionToTraitCollection

•viewWillTransitionToSize

•traitCollectionDidChange

•applicationDidBecomeActive

Multitasking Order

Page 24: Multitasking
Page 25: Multitasking

•applicationWillResignActive

•willTransitionToTraitCollection

•viewWillTransitionToSize

•traitCollectionDidChange

•applicationDidBecomeActive

Multitasking Order

Page 26: Multitasking
Page 27: Multitasking

•applicationWillResignActive

•willTransitionToTraitCollection

•viewWillTransitionToSize

•traitCollectionDidChange

•applicationDidBecomeActive

Multitasking Order

Page 28: Multitasking

Slideovers Are Still Inactive

Page 29: Multitasking
Page 30: Multitasking

Becoming Adaptive

Page 31: Multitasking

ToolsInstalled ViewsInstalled ConstraintsConditional Constraint Constants

Page 32: Multitasking

Demo

Page 33: Multitasking
Page 34: Multitasking
Page 35: Multitasking
Page 36: Multitasking
Page 37: Multitasking
Page 38: Multitasking

Only Constraint Constants Can Change

Page 39: Multitasking

Tips, Tricks, Gotchas

Page 40: Multitasking

Autolayout

Page 41: Multitasking
Page 42: Multitasking

Rotation APIs

Page 43: Multitasking
Page 44: Multitasking
Page 45: Multitasking

UISplitViewController

Page 46: Multitasking

Compact == Modal

Page 47: Multitasking

Still Can’t Be Pushed

Page 48: Multitasking

Can Be Embedded

Page 49: Multitasking
Page 50: Multitasking

UIPopoverPresentationController

Page 51: Multitasking

Also Fullscreen In Compact

Page 52: Multitasking

UIPresentationController

Page 53: Multitasking

Set modalPresentationStyle To .Custom

Page 54: Multitasking

adaptivePresentationStyleForTraitCollection:

Page 55: Multitasking

UICollectionView

Page 56: Multitasking

Don’t rely on shouldInvalidateLayoutForBoundsChange

Page 57: Multitasking

prepareLayout() may have incorrect traits

Page 58: Multitasking

use both willTransitionToTraitCollection,

viewWillTransitionToSize

Page 59: Multitasking
Page 60: Multitasking
Page 61: Multitasking

Bugs!

Page 62: Multitasking

iPhone 2 NowiPhone 3.2 iOS 6iPhone 5

iOS 9iOS 8iPad iPhone 6/6+ iPad Pro

iOS 5 iOS 7

Page 63: Multitasking

iPhone 2 NowiPhone 3.2 iOS 6iPhone 5

iOS 9iOS 8iPad iPhone 6/6+ iPad Pro

UIViewController

iOS 5 iOS 7

Page 64: Multitasking

iPhone 2 NowiPhone 3.2 iOS 6iPhone 5

iOS 9iOS 8

UISplitViewController

iPad iPhone 6/6+ iPad Pro

UIViewController

UIPopoverController

iOS 5 iOS 7

Page 65: Multitasking

iPhone 2 NowiPhone 3.2 iOS 6iPhone 5

iOS 9iOS 8

UISplitViewController

iPad iPhone 6/6+ iPad Pro

UIViewController

UIPopoverController

UIViewController Containment

iOS 5 iOS 7

Page 66: Multitasking

iPhone 2 NowiPhone 3.2 iOS 6iPhone 5

iOS 9iOS 8

UISplitViewController

Autolayout

iPad iPhone 6/6+ iPad Pro

UICollectionViewUIViewController

UIPopoverController

UIViewController Containment

iOS 5 iOS 7

Page 67: Multitasking

iPhone 2 NowiPhone 3.2 iOS 6iPhone 5

iOS 9iOS 8

UISplitViewController

Autolayout

iPad iPhone 6/6+ iPad Pro

UICollectionViewUIViewController

UIPopoverController UITraitCollectionUITraitEnvironment

UIViewController Containment

iOS 5 iOS 7

Page 68: Multitasking

iPhone 2 NowiPhone 3.2 iOS 6iPhone 5

iOS 9iOS 8

UISplitViewController

Autolayout

iPad iPhone 6/6+ iPad Pro

UICollectionViewUIViewController

UIPopoverControllerUIContentContainer

UITraitCollectionUITraitEnvironment

UIViewController Containment

iOS 5 iOS 7

Page 69: Multitasking

iPhone 2 NowiPhone 3.2 iOS 6iPhone 5

iOS 9iOS 8

UISplitViewController

Autolayout

iPad iPhone 6/6+ iPad Pro

MultitaskingUICollectionView

UIViewController

UIPopoverController

UIStackView

UIContentContainerUITraitCollectionUITraitEnvironment

UIViewController Containment

iOS 5 iOS 7

Page 70: Multitasking

UITraitCollection Support Has Been Added To Older Components

Page 71: Multitasking

Storyboards and Xibs

Page 72: Multitasking

Frames Change When Size Class Changes

Page 73: Multitasking
Page 74: Multitasking
Page 75: Multitasking

First Time In A New Size Class Adds Info To File

Page 76: Multitasking

Misplaced Views In Different Size Classes

Page 77: Multitasking

Installed Views And Constraints Only Work From Storyboards And Xibs

Page 78: Multitasking

Conditional Constraint Constants Only Work From Storyboards And Xibs

Page 79: Multitasking

Any x Any

Page 80: Multitasking

Constraints Must Be Set For Any x AnyEven though no devices have that size class configuration

Page 81: Multitasking
Page 82: Multitasking

Pick A Size Class To Use For Any x Any

Page 83: Multitasking

Interface Builder Warnings

Page 84: Multitasking

UI Will Look Weird

Page 85: Multitasking

Use Constraint Priorities

Page 86: Multitasking

Questions?https://github.com/mtitolo/spacehttps://github.com/mtitolo/primaries

Page 87: Multitasking

Photo Credits• https://unsplash.com/photos/iiaXf9xmgbM

• https://unsplash.com/photos/85hdWh8KtR4

• https://unsplash.com/photos/l5Tzv1alcps