What’s New in tvOS 12
What’s New in tvOS 12
WWDC 2018
Password AutoFill
- Ensure QuickType bar appears
- Get your app’s credentials on the QuickType bar
- Enable 1-tap sign in
![](https://cdn-images-1.medium.com/max/800/1*lYJeHOJUNNhjfqtm0FRJRg.gif)
![](https://cdn-images-1.medium.com/max/800/1*F-L_I7NksldoDoNuBHB4UQ.gif)
Ensure QuickType Bar Appears
Adopt UITextContentType
- tvOS wil try to automatically detect username and password fields
- Explicitly mark the text field types
![](https://cdn-images-1.medium.com/max/800/1*d7mXaRPhCVieUwh5_9Oocg.png)
QuickType Bar Suggestions
Associated Domains
- Powers many other features
- Strong relationship between app and website
- Introducing Password AutoFill for Apps ( WWDC 2017 )
![](https://cdn-images-1.medium.com/max/800/1*OsjIRDKxx380h6jGmUtJ8A.png)
Enable 1-Tap Sign In
Implement preferredFocusEnvironments
- AutoFill will perform a focused button’s action after filling
- Implement
preferredFocusEnvironments
to provide your login button for focus
![](https://cdn-images-1.medium.com/max/800/1*tDYQHiq2Ys5pTMk80bxcXQ.png)
![](https://cdn-images-1.medium.com/max/800/1*5JzgEBTSapoSLnfvjmkVag.gif)
Focus on tvOS
![](https://cdn-images-1.medium.com/max/800/1*HDs0vkszu0dvTyOag1o8gg.gif)
Focus Engine now supports apps regardless of how they are rendered ( new )
![](https://cdn-images-1.medium.com/max/800/1*Dv0vWNwwbYjo6yKQ-5vD0A.png)
What’s Included
- State management
- Focus item geometry
- Accessibility
- tvOS’s native feel
- Momentum during swipes
- Scrolling inertia
- Focus movement hinting
New Focus Features
![](https://cdn-images-1.medium.com/max/800/1*CqJuFwtuXBlDwBmH_sqZQQ.png)
UIFocusEnvironment ( new )
- Hooking into the focus engine
![](https://cdn-images-1.medium.com/max/800/1*XhwF9IYB-9GMtVf3B-eUZQ.png)
- Controlling and reacting to focus updates
![](https://cdn-images-1.medium.com/max/800/1*LWsKmfnhxfTo7WVzDwiRrw.png)
- Focus updating functions
![](https://cdn-images-1.medium.com/max/800/1*IuGh8pM0UMorYUWBEHnoAg.png)
![](https://cdn-images-1.medium.com/max/800/1*YR3fcUPR60jBT1Fi6AN7Aw.png)
UIFocusItemContainer ( new )
- Provide a
coordinateSpace
- UIView provides itself - Implement
focusItems(in rect: CGRect)
rect
is expressed incoordinateSpace
- Focus Items’ frames must also be expressed in
coordinateSpace
![](https://cdn-images-1.medium.com/max/800/1*cSPYEdUCZIgLGeltYzKziw.png)
UIFocusItem ( new )
- Inherits from UIFocusEnvironment
- Implement
canBecomeFocused
- Implement
didHintFocusMovment(_ hint: UIFocusMovmentHint)
- Provide a frame
- Same coordinate space as its containing UIFocusItemContainer
![](https://cdn-images-1.medium.com/max/800/1*6Nu6KGl1MTMwt8pZwp4V2Q.png)
UIFocusMovementHint ( new )
![](https://cdn-images-1.medium.com/max/800/1*6KUWXL3w_IXmKUtcIgGsQA.png)
UIFocusItemScrollableContainer ( new )
- Inherits from UIFocusItemContainer
- 3 additional properties
![](https://cdn-images-1.medium.com/max/800/1*8aFGfMGASfFbM9OA-6bl4Q.png)
contentOffset
is set automatically
![](https://cdn-images-1.medium.com/max/800/1*JQ9WW2PunQYN56jkb7HGBg.png)
Accessibility
- It’s incredibly easy !
- Implement
UIFocusItemContainer.focusItems(in rect: CGRect)
- Set
accessibilityLabel
andaccessibilityHint
on your Focus Items - What’s New in Accessibility ( WWDC 2016 )
Demo 1
![](https://cdn-images-1.medium.com/max/800/1*THN5_pdQjpZjvPPiWnI2uw.jpeg)
![](https://cdn-images-1.medium.com/max/800/1*25NUhxVZ18jm25PgwaK6yg.gif)
Demo 2
![](https://cdn-images-1.medium.com/max/800/1*YE2lC8yHzwsMgQBHRADaIw.jpeg)
![](https://cdn-images-1.medium.com/max/800/1*jxGqgWWPTMFe4MvNLB7GGw.gif)
Demo 3
![](https://cdn-images-1.medium.com/max/800/1*h2ajmtpu6XiXTXvNnjop7A.jpeg)
![](https://cdn-images-1.medium.com/max/800/1*SAEcWk0wewC2KrAOvWD3cg.gif)
Text Scrolling ( new )
Marquee
- Present variable-length strings in fixed geometry
- Visually highlights current focus
![](https://cdn-images-1.medium.com/max/800/1*yayA1wd7E2mLt5OGYkoOlA.png)
![](https://cdn-images-1.medium.com/max/800/1*UV0CV4-qFXVELWZrLiJ4fA.gif)
![](https://cdn-images-1.medium.com/max/800/1*DvIQXS0FWiqcbwptmBhYcA.gif)
TVUIKit ( new )
- Easy adoption of common UI patterns
- Built-in support for localization and accessibility
- Developer Beta
![](https://cdn-images-1.medium.com/max/800/1*DyzZhrvZl2ov-2DTN4ysNg.png)
TVPosterView ( new )
![](https://cdn-images-1.medium.com/max/800/1*zFt5srCyg1pkzifSDJO0Tw.gif)
![](https://cdn-images-1.medium.com/max/800/1*z3QH9hjEjQegSs6sWqb9Bw.gif)
![](https://cdn-images-1.medium.com/max/800/1*OZguixOOj6u10IOIQAHMTw.gif)
TVCaptionButtonView ( new )
![](https://cdn-images-1.medium.com/max/800/1*C_Ba2IGj4wq564jjgEUW0g.gif)
![](https://cdn-images-1.medium.com/max/800/1*x6-TRfcgugJ6oUR07dDO3Q.gif)
![](https://cdn-images-1.medium.com/max/800/1*JPoMC92To8_Vyjd5Cdinfw.gif)
TVCardView ( new )
![](https://cdn-images-1.medium.com/max/800/1*ggMZMOHMFdZFRxmltlIhtg.gif)
![](https://cdn-images-1.medium.com/max/800/1*tIg5FnonhzqAl1Po8eSGEw.gif)
![](https://cdn-images-1.medium.com/max/800/1*Vi7iZ04qcEEmC7jFDj5odg.gif)
TVMonogramView ( new )
![](https://cdn-images-1.medium.com/max/800/1*GtnbL00kX0UBj_-_j9s4-g.gif)
![](https://cdn-images-1.medium.com/max/800/1*2sPiPuJ-f6ayI2QDDbF0XA.gif)
![](https://cdn-images-1.medium.com/max/800/1*lZKChX_7gqZD35wSAthNrg.gif)
Common Theme ( new )
![](https://cdn-images-1.medium.com/max/800/1*Z8jvZup8qHC2e8Dz8moQrg.gif)
TVLockupView ( new )
- Custom content
- Your own widget that responds to focus
- Customize 4 special purpose subclasses
- TVPosterView
- TVCaptionButtonView
- TVCardView
- TVMonogramView
![](https://cdn-images-1.medium.com/max/800/1*B4IyN8curmsKHqNtdMwqkA.png)
![](https://cdn-images-1.medium.com/max/800/1*KkXhD_BgciJ9y7vr-Zt22w.png)
![](https://cdn-images-1.medium.com/max/800/1*IruwHGyWcYlaa8RLQz0MhQ.gif)
TVDigitEntryViewController
![](https://cdn-images-1.medium.com/max/800/1*ZjERxu33FTSlYFDMp89UHA.png)
![](https://cdn-images-1.medium.com/max/800/1*N_jMQ5g1yLr9IMjR4IDJ0A.png)
![](https://cdn-images-1.medium.com/max/800/1*OVv4EnIRVx3UT1nUwQ6afg.gif)
Demo 1
![](https://cdn-images-1.medium.com/max/800/1*pJOrloPiib0dpFLaaDxMOA.jpeg)
![](https://cdn-images-1.medium.com/max/800/1*QDP5By5voa9SIRgZfGDceg.gif)
Demo 2
![](https://cdn-images-1.medium.com/max/800/1*1DtohyjQKll9D7JRklOQ8g.jpeg)
![](https://cdn-images-1.medium.com/max/800/1*du94n59XQ5sAVZd2lC6ZpA.gif)