multitasking
TRANSCRIPT
Multitasking The Hard Way@micheletitoloLead Software Engineer, Capital One
What We’ll CoverWhat are Multitasking and Adaptivity?Creating AdaptivityTips, Tricks, and Gotchas
What Is Multitasking?
Adaptivity
Compact
Compact
Regular
Regular
✔
✔✔
x
Creating Adaptivity
• Launch.storyboard
• Full iPad rotation
• UITraitCollection
Mechanics
Apps Must Use A Launch.Storyboard
Apps Must Allow Full RotationSetting in Info.plist
UITraitCollectionhorizontalSizeClassverticalSizeClass
UITraitEnvironmentUIContentContainer
UITraitEnvironmenttraitCollection traitCollectionDidChange
UIView UIViewController UIPresentationController
UIContentContainerviewWillTransitionToSize willTransitionToTraitCollection
UIViewController UIPresentationController
Different Use Cases
Responding To Changes
Multitasking Order
•applicationWillResignActive
•willTransitionToTraitCollection
•viewWillTransitionToSize
•traitCollectionDidChange
•applicationDidBecomeActive
Multitasking Order
•applicationWillResignActive
•willTransitionToTraitCollection
•viewWillTransitionToSize
•traitCollectionDidChange
•applicationDidBecomeActive
Multitasking Order
•applicationWillResignActive
•willTransitionToTraitCollection
•viewWillTransitionToSize
•traitCollectionDidChange
•applicationDidBecomeActive
Multitasking Order
Slideovers Are Still Inactive
Becoming Adaptive
ToolsInstalled ViewsInstalled ConstraintsConditional Constraint Constants
Demo
Only Constraint Constants Can Change
Tips, Tricks, Gotchas
Autolayout
Rotation APIs
UISplitViewController
Compact == Modal
Still Can’t Be Pushed
Can Be Embedded
UIPopoverPresentationController
Also Fullscreen In Compact
UIPresentationController
Set modalPresentationStyle To .Custom
adaptivePresentationStyleForTraitCollection:
UICollectionView
Don’t rely on shouldInvalidateLayoutForBoundsChange
prepareLayout() may have incorrect traits
use both willTransitionToTraitCollection,
viewWillTransitionToSize
Bugs!
iPhone 2 NowiPhone 3.2 iOS 6iPhone 5
iOS 9iOS 8iPad iPhone 6/6+ iPad Pro
iOS 5 iOS 7
iPhone 2 NowiPhone 3.2 iOS 6iPhone 5
iOS 9iOS 8iPad iPhone 6/6+ iPad Pro
UIViewController
iOS 5 iOS 7
iPhone 2 NowiPhone 3.2 iOS 6iPhone 5
iOS 9iOS 8
UISplitViewController
iPad iPhone 6/6+ iPad Pro
UIViewController
UIPopoverController
iOS 5 iOS 7
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
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
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
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
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
UITraitCollection Support Has Been Added To Older Components
Storyboards and Xibs
Frames Change When Size Class Changes
First Time In A New Size Class Adds Info To File
Misplaced Views In Different Size Classes
Installed Views And Constraints Only Work From Storyboards And Xibs
Conditional Constraint Constants Only Work From Storyboards And Xibs
Any x Any
Constraints Must Be Set For Any x AnyEven though no devices have that size class configuration
Pick A Size Class To Use For Any x Any
Interface Builder Warnings
UI Will Look Weird
Use Constraint Priorities
Questions?https://github.com/mtitolo/spacehttps://github.com/mtitolo/primaries
Photo Credits• https://unsplash.com/photos/iiaXf9xmgbM
• https://unsplash.com/photos/85hdWh8KtR4
• https://unsplash.com/photos/l5Tzv1alcps