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

What’s New in tvOS 12

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

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