What input and layout rules define a good tvOS interface: the Siri Remote, controllers, the 10-foot UI, and which UIKit APIs are missing?

20.4.2 · L3 · Interview

Predict first

Are the image picker, the hover recogniser and the Digital Crown API available on tvOS?

import UIKit

let p = UIImagePickerController()
  • Yes, it is part of UIKit
  • No: unavailable in tvOS

Predict first

The pointer-style hover gesture on tvOS:

import UIKit

let h = UIHoverGestureRecognizer()
  • It compiles
  • It is an error: unavailable in tvOS

Predict first

SwiftUI’s Digital Crown modifier on tvOS:

import SwiftUI

struct W: View {
    @State var d = 0.0
    var body: some View { Text("a").focusable().digitalCrownRotation($d) }
}
  • It compiles
  • It is an error: unavailable in tvOS

Mental model. A tvOS interface is a menu board read from across a restaurant, operated by one person with one arrow-key. It must be legible from the doorway, every dish reachable with arrows alone, and nobody should have to type their order.

Input. The Siri Remote offers a click pad or touch surface for directional swipes and clicks, a Select (press), Menu/Back, Play/Pause, a TV button and Siri; games may use an MFi or console controller (GameController, extended gamepad profile with a directional pad and buttons) and the remote’s own gamepad profile. Apps receive these as press events (pressesBegan with UIPress.PressType values such as .select, .menu, .playPause, .upArrow), as gesture recognisers for swipes and clicks (UITapGestureRecognizer with allowedPressTypes), and as focus changes. There is no touch, no pointer and no hover, so interaction that needs a precise tap or a drag must be redesigned. Text input is painful (a keyboard driven by the remote, or dictation and a nearby iPhone), so minimise typing: use sign-in through a code on another device, recents and search suggestions. Layout is a 10-foot UI: users are across the room, so use large type (body text around 29 pt or more; titles larger), high contrast on dark backgrounds, generous spacing, and a safe area inset (about 60 pt top and bottom and 90 pt left and right) so content does not sit at the edges where some TVs cut off; the interface is 1920×1080 points on every Apple TV regardless of output resolution. Design for focus: a focused item scales up and lifts, rows and grids align on a regular rhythm, and the visual weight guides the eye.

What UIKit APIs are missing. tvOS is a subset of UIKit: there is no UIImagePickerController (no camera or library), no UIHoverGestureRecognizer or pointer APIs, no UIWebView or WKWebView (no browser), no document picker and Files, no share sheet (UIActivityViewController), no digitalCrownRotation (a watchOS SwiftUI API), little local storage (the system may purge it), and no general background execution. The compiler says “unavailable in tvOS” for each, so build the tvOS target early. tvOS adds its own frameworks: TVUIKit (poster, caption and lockup views, TVMonogramView, TVCollectionViewFullScreenLayout for focus-aware layouts with parallax), TVServices (Top Shelf, covered in the extensions topic), TVMLKit (legacy, a template-and-JavaScript model now deprecated) and the video subscriber account and TV provider frameworks for sign-in. The Apple TV’s UI parallax icons use layered image stacks (.lsr) for the focused poster tilt. Other practice: support the Menu button correctly (back, then exit to Home from the root), keep the interface dark-first (the system uses a dark appearance often), provide the right app icon and Top Shelf assets (large layered images), handle multiple users with profile-specific content, and consider that the screen is shared: avoid showing private data without a profile switch.

tvOS has no camera or library, so the image picker is unavailable.

There is no pointer on Apple TV, so hover recognisers do not exist.

The Digital Crown is a watch input; the modifier is not available on tvOS.

Common traps

  • Putting text fields in the main flow. Typing with a remote is slow; use codes, search suggestions and second-device sign-in.
  • Using APIs that do not exist on tvOS. Image pickers, hover recognisers and web views are unavailable; build for tvOS early to find them.

They might follow up with

  • How big is the tvOS canvas? 1920×1080 points on every Apple TV, with generous safe-area insets.
  • Which framework gives poster and lockup views with parallax? TVUIKit.

Related questions

  • 20.4.1 How does the tvOS focus engine work: focusable items, preferred focus, focus guides, and SwiftUI’s focusable…
  • 20.1.2 How do the platforms differ in input, process model and capabilities, and which entitlements and APIs change…
  • 20.5.1 How do you design for the Digital Crown, the always-on display and the watch’s battery and CPU limits?

← How does the tvOS focus engine work: focusable items, preferred…   How do you build a production tvOS media app: AVPlayerViewController… →