what’s new in tvos 12

230
#WWDC18 © 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. What’s New in tvOS 12 Session 208 Hans Kim, tvOS Engineering

Upload: others

Post on 06-Jan-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: What’s New in tvOS 12

#WWDC18

© 2018 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

•What’s New in tvOS 12 •Session 208

Hans Kim, tvOS Engineering

Page 2: What’s New in tvOS 12

Agenda

Page 3: What’s New in tvOS 12

Agenda

Password AutoFill

Page 4: What’s New in tvOS 12

Agenda

Password AutoFill

Focus Engine enhancement

Page 5: What’s New in tvOS 12

Agenda

Password AutoFill

Focus Engine enhancement

UI patterns

Page 6: What’s New in tvOS 12

Alex Sanciangco, tvOS Engineering Conrad Shultz, tvOS Engineering

•Password AutoFill

Page 7: What’s New in tvOS 12
Page 8: What’s New in tvOS 12

•Demo

Page 9: What’s New in tvOS 12
Page 10: What’s New in tvOS 12

•Ensure QuickType bar appears

Page 11: What’s New in tvOS 12

•Ensure QuickType bar appears•Get your app’s credentials on the QuickType bar

Page 12: What’s New in tvOS 12

•Ensure QuickType bar appears•Get your app’s credentials on the QuickType bar•Enable one-tap sign in

Page 13: What’s New in tvOS 12

Ensure QuickType Bar Appears Adopt UITextContentType

Page 14: What’s New in tvOS 12

tvOS will try to automatically detect username and password fields

Ensure QuickType Bar Appears Adopt UITextContentType

Page 15: What’s New in tvOS 12

tvOS will try to automatically detect username and password fields

Explicitly mark the text field types

Ensure QuickType Bar Appears Adopt UITextContentType

Page 16: What’s New in tvOS 12

tvOS will try to automatically detect username and password fields

Explicitly mark the text field types

let usernameField = UITextField() let passwordField = UITextField()

usernameField.textContentType = .username passwordField.textContentType = .password

Ensure QuickType Bar Appears Adopt UITextContentType

Page 17: What’s New in tvOS 12
Page 18: What’s New in tvOS 12
Page 19: What’s New in tvOS 12
Page 20: What’s New in tvOS 12
Page 21: What’s New in tvOS 12

QuickType Bar Suggestions Associated Domains

Page 22: What’s New in tvOS 12

QuickType Bar Suggestions Associated Domains

Powers many other features

Page 23: What’s New in tvOS 12

QuickType Bar Suggestions Associated Domains

Powers many other features

Strong relationship between app and website

Page 24: What’s New in tvOS 12

QuickType Bar Suggestions Associated Domains

Powers many other features

Strong relationship between app and website

Introducing Password AutoFill for Apps WWDC 2017

Page 25: What’s New in tvOS 12
Page 26: What’s New in tvOS 12
Page 27: What’s New in tvOS 12

Enable One-Tap Sign In Implement preferredFocusEnvironments

Page 28: What’s New in tvOS 12

AutoFill will perform a focused button’s action after filling

Enable One-Tap Sign In Implement preferredFocusEnvironments

Page 29: What’s New in tvOS 12

AutoFill will perform a focused button’s action after filling

Implement preferredFocusEnvironments to provide your login button for focus

Enable One-Tap Sign In Implement preferredFocusEnvironments

Page 30: What’s New in tvOS 12

// Sample Implementation

override var preferredFocusEnvironments: [UIFocusEnvironment] { if let username = usernameTextField.text, let password = passwordTextField.text { return [loginButton] } else { return [usernameTextField] } }

Page 31: What’s New in tvOS 12

// Sample Implementation

override var preferredFocusEnvironments: [UIFocusEnvironment] { if let username = usernameTextField.text, let password = passwordTextField.text { return [loginButton] } else { return [usernameTextField] } }

Page 32: What’s New in tvOS 12

// Sample Implementation

override var preferredFocusEnvironments: [UIFocusEnvironment] { if let username = usernameTextField.text, let password = passwordTextField.text { return [loginButton] } else { return [usernameTextField] } }

Page 33: What’s New in tvOS 12

// Sample Implementation

override var preferredFocusEnvironments: [UIFocusEnvironment] { if let username = usernameTextField.text, let password = passwordTextField.text { return [loginButton] } else { return [usernameTextField] } }

Page 34: What’s New in tvOS 12

// Sample Implementation

override var preferredFocusEnvironments: [UIFocusEnvironment] { if let username = usernameTextField.text, let password = passwordTextField.text { return [loginButton] } else { return [usernameTextField] } }

Page 35: What’s New in tvOS 12

Summary

Page 36: What’s New in tvOS 12

Reduce the friction of signing into your app with Password AutoFill

Summary

Page 37: What’s New in tvOS 12

Reduce the friction of signing into your app with Password AutoFill

Tag your text fields with appropriate UITextContentType

Summary

Page 38: What’s New in tvOS 12

Reduce the friction of signing into your app with Password AutoFill

Tag your text fields with appropriate UITextContentType

Adopt Associated Domains

Summary

Page 39: What’s New in tvOS 12

Reduce the friction of signing into your app with Password AutoFill

Tag your text fields with appropriate UITextContentType

Adopt Associated Domains

Implement preferredFocusEnvironments

Summary

Page 40: What’s New in tvOS 12

Ada Turner, tvOS Engineering

•Focus Enhancements

Page 41: What’s New in tvOS 12

Focus on tvOS

Page 42: What’s New in tvOS 12

Focus on tvOS

Page 43: What’s New in tvOS 12

Focus on tvOS

UIKit

Page 44: What’s New in tvOS 12

Focus on tvOS

SpriteKitUIKit

Page 45: What’s New in tvOS 12

Focus on tvOS

SpriteKit SceneKitUIKit

Page 46: What’s New in tvOS 12

Focus Engine now supports apps regardless of how they are rendered.

NEW

Page 47: What’s New in tvOS 12

What’s Included

Page 48: What’s New in tvOS 12

What’s Included

State management

Page 49: What’s New in tvOS 12

What’s Included

State management

Focus item geometry

Page 50: What’s New in tvOS 12

What’s Included

State management

Focus item geometry

Accessibility

Page 51: What’s New in tvOS 12

What’s Included

State management

Focus item geometry

Accessibility

tvOS’s native feel • Momentum during swipes • Scrolling inertia • Focus movement hinting

Page 52: What’s New in tvOS 12

Focus Components

Page 53: What’s New in tvOS 12

Focus Components

UIFocusEnvironment

Page 54: What’s New in tvOS 12

Focus Components

UIFocusItem

UIFocusEnvironment

Page 55: What’s New in tvOS 12

Focus Components

UIFocusItem

UIFocusEnvironment UIFocusSystem

Page 56: What’s New in tvOS 12

Focus Components

UIFocusItem

UIFocusEnvironment UIFocusSystem

Focus Interaction in tvOS 11 WWDC 2017

Page 57: What’s New in tvOS 12

New Focus Features

Page 58: What’s New in tvOS 12

New Focus Features

UIFocusItem

UIFocusEnvironment UIFocusSystem

Page 59: What’s New in tvOS 12

New Focus FeaturesNEW

UIFocusItem

UIFocusEnvironment UIFocusSystem

Page 60: What’s New in tvOS 12

New Focus FeaturesNEW

UIFocusItem

UIFocusEnvironment UIFocusSystemUIFocusItemContainer

Page 61: What’s New in tvOS 12

New Focus FeaturesNEW

UIFocusItem

UIFocusEnvironment UIFocusSystemUIFocusItemContainer

Page 62: What’s New in tvOS 12

New Focus FeaturesNEW

UIFocusItemScrollableContainer UIFocusItem

UIFocusEnvironment UIFocusSystemUIFocusItemContainer

Page 63: What’s New in tvOS 12

New Focus FeaturesNEW

UIFocusMovementHintUIFocusItemScrollableContainer UIFocusItem

UIFocusEnvironment UIFocusSystemUIFocusItemContainer

Page 64: What’s New in tvOS 12

Adopting New Focus API

Page 65: What’s New in tvOS 12

UIFocusEnvironmentNEW

UIFocusEnvironment

Page 66: What’s New in tvOS 12

UIFocusEnvironment

Hooking into the focus engine • weak var parentFocusEnvironment: UIFocusEnvironment? • var focusItemContainer: UIFocusItemContainer?

NEW

UIFocusEnvironment

Page 67: What’s New in tvOS 12

UIFocusEnvironment

Hooking into the focus engine • weak var parentFocusEnvironment: UIFocusEnvironment? • var focusItemContainer: UIFocusItemContainer?

Controlling and reacting to focus updates • var preferredFocusEnvironments: [UIFocusEnvironment] • func shouldUpdateFocus(in context: UIFocusUpdateContext) -> Bool

• func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator)

NEW

UIFocusEnvironment

Page 68: What’s New in tvOS 12

UIFocusEnvironment

Focus updating functions

NEW

UIFocusEnvironment

Page 69: What’s New in tvOS 12

UIFocusEnvironment

Focus updating functions

NEW

UIFocusEnvironment

func setNeedsFocusUpdate() { UIFocusSystem(for: self)?.requestFocusUpdate(to: self) }

func updateFocusIfNeeded() { UIFocusSystem(for: self)?.updateFocusIfNeeded() }

Page 70: What’s New in tvOS 12

UIFocusItemContainerNEW

UIFocusEnvironment

UIFocusItemContainer

Page 71: What’s New in tvOS 12

UIFocusItemContainerNEW

UIFocusEnvironment

UIFocusItemContainerProvide a coordinateSpace • UIView provides itself

Page 72: What’s New in tvOS 12

UIFocusItemContainerNEW

UIFocusEnvironment

UIFocusItemContainerProvide a coordinateSpace • UIView provides itself

Implement focusItems(in rect: CGRect) • Return Focus Items whose frames intersect

with rect • rect is expressed in coordinateSpace • Focus Items’ frames must also be expressed in coordinateSpace

Page 73: What’s New in tvOS 12

UIFocusItemNEW

UIFocusEnvironment

UIFocusItemContainer

UIFocusItem

UIFocusItem

UIFocusItem

Page 74: What’s New in tvOS 12

Inherits from UIFocusEnvironment

UIFocusItemNEW

UIFocusEnvironment

UIFocusItemContainer

UIFocusItem

UIFocusItem

UIFocusItem

Page 75: What’s New in tvOS 12

Inherits from UIFocusEnvironment

Implement canBecomeFocused

UIFocusItemNEW

UIFocusEnvironment

UIFocusItemContainer

UIFocusItem

UIFocusItem

UIFocusItem

Page 76: What’s New in tvOS 12

Inherits from UIFocusEnvironment

Implement canBecomeFocused

Implement didHintFocusMovement(_ hint: UIFocusMovementHint)

UIFocusItemNEW

UIFocusEnvironment

UIFocusItemContainer

UIFocusItem

UIFocusItem

UIFocusItem

Page 77: What’s New in tvOS 12

Inherits from UIFocusEnvironment

Implement canBecomeFocused

Implement didHintFocusMovement(_ hint: UIFocusMovementHint)

Provide a frame • Same coordinate space as its containing

UIFocusItemContainer

UIFocusItemNEW

UIFocusEnvironment

UIFocusItemContainer

UIFocusItem

UIFocusItem

UIFocusItem

Page 78: What’s New in tvOS 12

UIFocusMovementHintNEW

1

1

-1

-1

class UIFocusMovementHint : NSObject, NSCopying { var movementDirection: CGVector { get } var perspectiveTransform: CATransform3D { get } var rotation: CGVector { get } var translation: CGVector { get } var interactionTransform: CATransform3D { get } }

Page 79: What’s New in tvOS 12

UIFocusMovementHintNEW

1

1

-1

-1

class UIFocusMovementHint : NSObject, NSCopying { var movementDirection: CGVector { get } var perspectiveTransform: CATransform3D { get } var rotation: CGVector { get } var translation: CGVector { get } var interactionTransform: CATransform3D { get } }

Page 80: What’s New in tvOS 12

UIFocusMovementHintNEW

1

1

-1

-1

.

class UIFocusMovementHint : NSObject, NSCopying { var movementDirection: CGVector { get } var perspectiveTransform: CATransform3D { get } var rotation: CGVector { get } var translation: CGVector { get } var interactionTransform: CATransform3D { get } }

Page 81: What’s New in tvOS 12

UIFocusMovementHintNEW

1

1

-1

-1

.

class UIFocusMovementHint : NSObject, NSCopying { var movementDirection: CGVector { get } var perspectiveTransform: CATransform3D { get } var rotation: CGVector { get } var translation: CGVector { get } var interactionTransform: CATransform3D { get } }

Page 82: What’s New in tvOS 12

UIFocusMovementHintNEW

1

1

-1

-1

class UIFocusMovementHint : NSObject, NSCopying { var movementDirection: CGVector { get } var perspectiveTransform: CATransform3D { get } var rotation: CGVector { get } var translation: CGVector { get } var interactionTransform: CATransform3D { get } }

Page 83: What’s New in tvOS 12

UIFocusMovementHintNEW

1

1

-1

-1

class UIFocusMovementHint : NSObject, NSCopying { var movementDirection: CGVector { get } var perspectiveTransform: CATransform3D { get } var rotation: CGVector { get } var translation: CGVector { get } var interactionTransform: CATransform3D { get } }

Page 84: What’s New in tvOS 12

UIFocusMovementHintNEW

1

1

-1

-1

class UIFocusMovementHint : NSObject, NSCopying { var movementDirection: CGVector { get } var perspectiveTransform: CATransform3D { get } var rotation: CGVector { get } var translation: CGVector { get } var interactionTransform: CATransform3D { get } }

Page 85: What’s New in tvOS 12

UIFocusItemScrollableContainerNEW

UIFocusEnvironment

UIFocusItem

UIFocusItem

ScrollableContainer

UIFocusItem

UIFocusItem

Page 86: What’s New in tvOS 12

UIFocusItemScrollableContainerNEW

UIFocusEnvironment

UIFocusItem

UIFocusItem

ScrollableContainer

UIFocusItem

UIFocusItem

Inherits from UIFocusItemContainer

Page 87: What’s New in tvOS 12

UIFocusItemScrollableContainerNEW

UIFocusEnvironment

UIFocusItem

UIFocusItem

ScrollableContainer

UIFocusItem

UIFocusItem

Inherits from UIFocusItemContainer

Three additional properties

Page 88: What’s New in tvOS 12

UIFocusItemScrollableContainerNEW

UIFocusEnvironment

UIFocusItem

UIFocusItem

ScrollableContainer

UIFocusItem

UIFocusItem

Inherits from UIFocusItemContainer

Three additional properties• var contentOffset: CGPoint { get set }

Page 89: What’s New in tvOS 12

UIFocusItemScrollableContainerNEW

UIFocusEnvironment

UIFocusItem

UIFocusItem

ScrollableContainer

UIFocusItem

UIFocusItem

Inherits from UIFocusItemContainer

Three additional properties• var contentOffset: CGPoint { get set }• var contentSize: CGSize { get }

Page 90: What’s New in tvOS 12

UIFocusItemScrollableContainerNEW

UIFocusEnvironment

UIFocusItem

UIFocusItem

ScrollableContainer

UIFocusItem

UIFocusItem

Inherits from UIFocusItemContainer

Three additional properties• var contentOffset: CGPoint { get set }• var contentSize: CGSize { get }• var visibleSize: CGSize { get }

Page 91: What’s New in tvOS 12

UIFocusItemScrollableContainerNEW

UIFocusEnvironment

UIFocusItem

UIFocusItem

ScrollableContainer

UIFocusItem

UIFocusItem

Inherits from UIFocusItemContainer

Three additional properties• var contentOffset: CGPoint { get set }• var contentSize: CGSize { get }• var visibleSize: CGSize { get }

contentOffset is set automatically

Page 92: What’s New in tvOS 12

UIFocusItemScrollableContainerNEW

UIFocusEnvironment

UIFocusItem

UIFocusItem

ScrollableContainer

UIFocusItem

UIFocusItem

Inherits from UIFocusItemContainer

Three additional properties • var contentOffset: CGPoint { get set } • var contentSize: CGSize { get } • var visibleSize: CGSize { get }

contentOffset is set automatically

Page 93: What’s New in tvOS 12

Accessibility

Page 94: What’s New in tvOS 12

Accessibility

It’s incredibly easy!

Page 95: What’s New in tvOS 12

Accessibility

It’s incredibly easy!

Implement UIFocusItemContainer.focusItems(in rect: CGRect)

Page 96: What’s New in tvOS 12

Accessibility

It’s incredibly easy!

Implement UIFocusItemContainer.focusItems(in rect: CGRect)

Set accessibilityLabel and accessibilityHint on your Focus Items

Page 97: What’s New in tvOS 12

Accessibility

It’s incredibly easy!

Implement UIFocusItemContainer.focusItems(in rect: CGRect)

Set accessibilityLabel and accessibilityHint on your Focus Items

What’s New in Accessibility WWDC 2016

Page 98: What’s New in tvOS 12

Paul Schneider, tvOS Engineering

•Demo •Focus-powered Metal app

Page 99: What’s New in tvOS 12

Summary

Page 100: What’s New in tvOS 12

Summary

Implement custom UIFocusEnvironments and UIFocusItems

Page 101: What’s New in tvOS 12

Summary

Implement custom UIFocusEnvironments and UIFocusItems

Even with non-UIKit components!

Page 102: What’s New in tvOS 12

Summary

Implement custom UIFocusEnvironments and UIFocusItems

Even with non-UIKit components!

Support Focus movement with UIFocusItemContainer

Page 103: What’s New in tvOS 12

Summary

Implement custom UIFocusEnvironments and UIFocusItems

Even with non-UIKit components!

Support Focus movement with UIFocusItemContainer

Hint at interaction with UIFocusMovementHint

Page 104: What’s New in tvOS 12

Summary

Implement custom UIFocusEnvironments and UIFocusItems

Even with non-UIKit components!

Support Focus movement with UIFocusItemContainer

Hint at interaction with UIFocusMovementHint

Automatically scroll with UIFocusItemScrollableContainer

Page 105: What’s New in tvOS 12

Summary

Implement custom UIFocusEnvironments and UIFocusItems

Even with non-UIKit components!

Support Focus movement with UIFocusItemContainer

Hint at interaction with UIFocusMovementHint

Automatically scroll with UIFocusItemScrollableContainer

Full accessibility support

Page 106: What’s New in tvOS 12

Summary

Implement custom UIFocusEnvironments and UIFocusItems

Even with non-UIKit components!

Support Focus movement with UIFocusItemContainer

Hint at interaction with UIFocusMovementHint

Automatically scroll with UIFocusItemScrollableContainer

Full accessibility support

Available in the Developer Beta

Page 107: What’s New in tvOS 12

Hans Kim, tvOS Engineering

•UI Patterns

Page 108: What’s New in tvOS 12
Page 109: What’s New in tvOS 12
Page 110: What’s New in tvOS 12

Text Scrolling Marquee

Page 111: What’s New in tvOS 12

Text Scrolling Marquee

Present variable-length strings in fixed geometry

Page 112: What’s New in tvOS 12

Text Scrolling Marquee

Present variable-length strings in fixed geometry

Visually highlights current focus

NEW

Page 113: What’s New in tvOS 12
Page 114: What’s New in tvOS 12
Page 115: What’s New in tvOS 12

UILabel Marquee

label.enablesMarqueeWhenAncestorFocused = true

Page 116: What’s New in tvOS 12

UILabel Marquee

label.enablesMarqueeWhenAncestorFocused = true

NEW

Page 117: What’s New in tvOS 12

LabelLabel Label

NEW

Page 118: What’s New in tvOS 12

Label LabelLabel

NEW

Page 119: What’s New in tvOS 12

string too long for label string too lon LabelLabel

NEW

Page 120: What’s New in tvOS 12

string too long for label string too lon LabelLabel

NEW

Page 121: What’s New in tvOS 12
Page 122: What’s New in tvOS 12
Page 123: What’s New in tvOS 12
Page 124: What’s New in tvOS 12
Page 125: What’s New in tvOS 12
Page 126: What’s New in tvOS 12
Page 127: What’s New in tvOS 12
Page 128: What’s New in tvOS 12
Page 129: What’s New in tvOS 12

TVUIKit

Page 130: What’s New in tvOS 12

TVUIKit

NEW

Page 131: What’s New in tvOS 12

Poster

NEW

Page 132: What’s New in tvOS 12

Poster Caption Button

NEW

Page 133: What’s New in tvOS 12

Poster Caption Button Card

NEW

Page 134: What’s New in tvOS 12

Poster Caption Button Card Monogram

NEW

Page 135: What’s New in tvOS 12
Page 136: What’s New in tvOS 12
Page 137: What’s New in tvOS 12

TVPosterViewNEW

Page 138: What’s New in tvOS 12

TVPosterView

image

NEW

Page 139: What’s New in tvOS 12

TVPosterView

image

title

subtitle

NEW

Page 140: What’s New in tvOS 12

TVPosterView

image

title

subtitle

NEW

Page 141: What’s New in tvOS 12

TVPosterView

image

title

subtitle

NEW

Page 142: What’s New in tvOS 12

TVPosterView

image

title

subtitle

NEW

Page 143: What’s New in tvOS 12

TVPosterView

image

title

subtitle

NEW

Page 144: What’s New in tvOS 12

TVPosterView

image

title

subtitle

image

NEW

Page 145: What’s New in tvOS 12

TVPosterView

image

title

subtitle

image

NEW

Page 146: What’s New in tvOS 12

TVPosterView

image

title

subtitle

image

NEW

Page 147: What’s New in tvOS 12
Page 148: What’s New in tvOS 12
Page 149: What’s New in tvOS 12
Page 150: What’s New in tvOS 12
Page 151: What’s New in tvOS 12

TVCaptionButtonViewNEW

Page 152: What’s New in tvOS 12

TVCaptionButtonView

content

NEW

Page 153: What’s New in tvOS 12

TVCaptionButtonView

title

subtitle

content

NEW

Page 154: What’s New in tvOS 12

TVCaptionButtonView

title

subtitle

content

NEW

Page 155: What’s New in tvOS 12

TVCaptionButtonView

title

subtitle

NEW

Page 156: What’s New in tvOS 12

TVCaptionButtonView

title

subtitle

$9.99

NEW

Page 157: What’s New in tvOS 12

TVCaptionButtonView

title

subtitle

$9.99$9.99

NEW

Page 158: What’s New in tvOS 12

$9.99

TVCaptionButtonView

title

subtitle

NEW

Page 159: What’s New in tvOS 12

TVCaptionButtonView

title

subtitle

$9.99

NEW

Page 160: What’s New in tvOS 12

TVCaptionButtonView

title

subtitle

$9.99

NEW

Page 161: What’s New in tvOS 12

TVCaptionButtonView

title

subtitle

$9.99

NEW

Page 162: What’s New in tvOS 12
Page 163: What’s New in tvOS 12
Page 164: What’s New in tvOS 12
Page 165: What’s New in tvOS 12
Page 166: What’s New in tvOS 12

TVCardViewNEW

Page 167: What’s New in tvOS 12

TVCardViewNEW

Page 168: What’s New in tvOS 12

TVCardViewNEW

Page 169: What’s New in tvOS 12

TVCardViewNEW

Page 170: What’s New in tvOS 12

TVCardViewNEW

Page 171: What’s New in tvOS 12
Page 172: What’s New in tvOS 12
Page 173: What’s New in tvOS 12
Page 174: What’s New in tvOS 12
Page 175: What’s New in tvOS 12

NEWTVMonogramView

Page 176: What’s New in tvOS 12

NEWTVMonogramView

content image

Page 177: What’s New in tvOS 12

NEWTVMonogramView

content image

title

subtitle

Page 178: What’s New in tvOS 12

NEWTVMonogramView

title

subtitle

Page 179: What’s New in tvOS 12

NEWTVMonogramView

title

subtitle

John Appleseed

Page 180: What’s New in tvOS 12

NEWTVMonogramView

title

subtitle

John AppleseedJA

Page 181: What’s New in tvOS 12

NEWTVMonogramView

title

subtitle

JA

Page 182: What’s New in tvOS 12

NEWTVMonogramView

title

subtitle

JA

Page 183: What’s New in tvOS 12

TVMonogramView

title

subtitle

NEW

Page 184: What’s New in tvOS 12

TVMonogramView

title

subtitle

NEW

Page 185: What’s New in tvOS 12
Page 186: What’s New in tvOS 12
Page 187: What’s New in tvOS 12

NEW

Page 188: What’s New in tvOS 12

Poster Caption Button Card Monogram

NEW

Page 189: What’s New in tvOS 12

Common Theme

content

NEW

Page 190: What’s New in tvOS 12

Common Theme

content

footer

header

NEW

Page 191: What’s New in tvOS 12

Common Theme

content

footer

header

NEW

Page 192: What’s New in tvOS 12

Common Theme

content

footer

header

NEW

Page 193: What’s New in tvOS 12

TVPosterView TVCaptionButton TVCardView TVMonogramView

NEW

Page 194: What’s New in tvOS 12

TVPosterView TVCaptionButton TVCardView TVMonogramView

NEW

Page 195: What’s New in tvOS 12

TVPosterView TVCaptionButton TVCardView TVMonogramView

TVLockupView

NEW

Page 196: What’s New in tvOS 12

TVLockupView

content

footer

header

NEW

Page 197: What’s New in tvOS 12

TVLockupView

content

footer

header

NEW

Page 198: What’s New in tvOS 12

TVLockupView

content

footer

header

content

NEW

Page 199: What’s New in tvOS 12

TVLockupView

content

footer

header

content

NEW

Page 200: What’s New in tvOS 12

TVLockupView

content

footer

header

content

NEW

Page 201: What’s New in tvOS 12

TVLockupView Custom content NEW

Page 202: What’s New in tvOS 12

TVLockupView Custom content

@available(tvOS 12.0, *)

public protocol TVLockupViewComponent : NSObjectProtocol {

optional public func updateAppearance(forLockupViewState state: UIControl.State)

}

NEW

Page 203: What’s New in tvOS 12

TVLockupView Custom content

@available(tvOS 12.0, *)

public protocol TVLockupViewComponent : NSObjectProtocol {

optional public func updateAppearance(forLockupViewState state: UIControl.State)

}

NEW

Page 204: What’s New in tvOS 12

TVLockupViewNEW

Page 205: What’s New in tvOS 12

TVLockupView

Your own widget that responds to focus

NEW

Page 206: What’s New in tvOS 12

TVLockupView

Your own widget that responds to focus

Customize 4 special purpose subclasses • TVPosterView • TVCaptionButtonView • TVCardView • TVMonogramView

NEW

Page 207: What’s New in tvOS 12
Page 208: What’s New in tvOS 12
Page 209: What’s New in tvOS 12

TVDigitEntryViewControllerNEW

Page 210: What’s New in tvOS 12

TVDigitEntryViewController NEW

Page 211: What’s New in tvOS 12

TVDigitEntryViewController NEW

Page 212: What’s New in tvOS 12

TVDigitEntryViewController NEW

Page 213: What’s New in tvOS 12

TVDigitEntryViewController NEW

Page 214: What’s New in tvOS 12

TVDigitEntryViewController NEW

Page 215: What’s New in tvOS 12

@available(tvOS 12.0, *)open class TVDigitEntryViewController : UIViewController { open var entryCompletionHandler: (String) -> Swift.Void open var titleText: String?

open var promptText: String?

open var isSecureDigitEntry: Bool open var numberOfDigits: UInt open func clearEntry(animated: Bool)}

NEW

Page 216: What’s New in tvOS 12

@available(tvOS 12.0, *)open class TVDigitEntryViewController : UIViewController { open var entryCompletionHandler: (String) -> Swift.Void open var titleText: String?

open var promptText: String?

open var isSecureDigitEntry: Bool open var numberOfDigits: UInt open func clearEntry(animated: Bool)}

NEW

Page 217: What’s New in tvOS 12

@available(tvOS 12.0, *)open class TVDigitEntryViewController : UIViewController { open var entryCompletionHandler: (String) -> Swift.Void open var titleText: String?

open var promptText: String?

open var isSecureDigitEntry: Bool open var numberOfDigits: UInt open func clearEntry(animated: Bool)}

NEW

Page 218: What’s New in tvOS 12

@available(tvOS 12.0, *)open class TVDigitEntryViewController : UIViewController { open var entryCompletionHandler: (String) -> Swift.Void open var titleText: String?

open var promptText: String?

open var isSecureDigitEntry: Bool open var numberOfDigits: UInt open func clearEntry(animated: Bool)}

NEW

Page 219: What’s New in tvOS 12

Marshall Huss, tvOS Engineering

•Demo

Page 220: What’s New in tvOS 12

TVUIKitNEW

Page 221: What’s New in tvOS 12

TVUIKit

Easy adoption of common UI patterns

NEW

Page 222: What’s New in tvOS 12

TVUIKit

Easy adoption of common UI patterns

Built-in support for localization and accessibility

NEW

Page 223: What’s New in tvOS 12

TVUIKit

Easy adoption of common UI patterns

Built-in support for localization and accessibility

Developer Beta

NEW

Page 224: What’s New in tvOS 12

Summary

Page 225: What’s New in tvOS 12

Summary

Password AutoFill

Page 226: What’s New in tvOS 12

Summary

Password AutoFill

Focus Engine enhancement

Page 227: What’s New in tvOS 12

Summary

Password AutoFill

Focus Engine enhancement

TVUIKit

Page 228: What’s New in tvOS 12

More Informationhttps://developer.apple.com/wwdc2018/208

tvOS Lab Technology Lab 7 Wednesday 9:00AM

tvOS Lab Technology Lab 7 Thursday 1:00PM

Page 229: What’s New in tvOS 12

More Informationhttps://developer.apple.com/wwdc2018/208

Safari, WebKit, and Password AutoFill Lab Technology Lab 3 Wednesday 2:00PM

Safari, WebKit, and Password AutoFill Lab Technology Lab 4 Friday 2:45PM

Page 230: What’s New in tvOS 12