multitasking

Post on 17-Jan-2017

235 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

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

top related