Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
tvOS Workshop
Ben Scheirman
October 12, 2016
Programming
1
92
tvOS Workshop
A 1-day workshop given to attendees of Pragmaconf '16 in Verona, Italy.
Ben Scheirman
October 12, 2016
Tweet
Share
More Decks by Ben Scheirman
See All by Ben Scheirman
A Promise for a Better Future
subdigital
0
89
Bézier Curves
subdigital
1
4.2k
Buckets of Code
subdigital
0
1.8k
Building 5 Calls for iOS
subdigital
0
88
Swift on Linux
subdigital
1
660
Swift Solutions
subdigital
2
430
iOS 8 Networking
subdigital
4
850
iOS 8 App Extensions
subdigital
1
360
Effective Networking with iOS 8 and Swift
subdigital
4
1.6k
Other Decks in Programming
See All in Programming
tidy_rpart
bk_18
0
390
TokyoR#103_DataProcessing
kilometer
0
350
はてなリモートインターンシップ2022 Web API 講義資料
hatena
0
150
はてなリモートインターンシップ2022 インフラ 講義資料
hatena
4
2.1k
Workshop on Jetpack compose
aldefy
0
140
PHPアプリケーションにおけるアーキテクチャメトリクスについて / Architecture Metrics in PHP Applications
isanasan
1
180
Gradle build: The time is now
nonews
0
130
僕が考えた超最強のKMMアプリの作り方
spbaya0141
0
170
Form実装基本を学び直してみた
hyugatsukui
0
200
Excelの助けを借りて楽にシナリオを作ろう
rpa_niiyama
0
190
An Advanced Introduction to R
nicetak
0
1.5k
Cloudflare WorkersでGoを動かすライブラリを作っている話
syumai
1
270
Featured
See All Featured
A better future with KSS
kneath
230
16k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
318
19k
How to Ace a Technical Interview
jacobian
270
21k
GraphQLとの向き合い方2022年版
quramy
20
9.8k
Build The Right Thing And Hit Your Dates
maggiecrowley
22
1.4k
Ruby is Unlike a Banana
tanoku
93
9.5k
What's in a price? How to price your products and services
michaelherold
233
9.7k
Designing with Data
zakiwarfel
91
4.2k
What the flash - Photography Introduction
edds
64
10k
For a Future-Friendly Web
brad_frost
166
7.7k
The Art of Programming - Codeland 2020
erikaheidi
35
11k
Making the Leap to Tech Lead
cromwellryan
116
7.6k
Transcript
None
None
None
None
None
A New Platform
Not just a bigger screen. • Central place in home
• The hub for media • Families
Refreshing Stuff
One Screen Size* *(for now) 1920 x 1080 16:9
One Image Scale
One Image Scale
Always Connected…
Not So Refreshing…
Overscan 90 pt gutter on sides 60 pt gutter top/bottom
None
Input
None
None
None
?
None
Design Considerations
None
10-feet away
None
•Provide a single focus point. •Keep the background simple. •Use
words only when they’re essential or part of a logo. •Don’t include screenshots. •Keep icon corners square.
None
None
None
2 UI Paradigms
UIKit TVML
UIKit UIViewController UIView UIButton UILabel UIImageView
JavaScript TVML XML
TVML <document> <loadingTemplate> <activityIndicator> <text>Hello World!</text> </activityIndicator> </loadingTemplate> </document>
<document> <stackTemplate> <banner> <title>Available Action Movies</title> </banner> <collectionList> <shelf> <section>
<lockup onselect="playMedia('path to video', 'video')"> <img src="path to image" width="182" height="274"/> <title>Movie 1</title> </lockup> <lockup onselect="playMedia('path to video', 'video')"> <img src="path to image" width="182" height="274" /> <title>Movie 2</title> </lockup> </section> </shelf> </collectionList> </stackTemplate> </document>
<document> <stackTemplate> <banner> <title>Available Action Movies</title> </banner> <collectionList> <shelf> <section>
<lockup onselect="playMedia('path to video', 'video')"> <img src="path to image" width="182" height="274"/> <title>Movie 1</title> </lockup> <lockup onselect="playMedia('path to video', 'video')"> <img src="path to image" width="182" height="274" /> <title>Movie 2</title> </lockup> </section> </shelf> </collectionList> </stackTemplate> </document>
function playMedia(extension, mediaType) { var videourl = baseURL + extension;
var singleVideo = new MediaItem(mediaType, videourl); var videoList = new Playlist(); videoList.push(singleVideo); var myPlayer = new Player(); myPlayer.playlist = videoList; myPlayer.play(); }
None
https://developer.apple.com/library/content/samplecode/TVMLCatalog/Introduction/ Intro.html
None
Focus
None
Am I focusable? canBecomeFocused? userInteractionEnabled? visible?
Am I focusable? po [view _whyIsThisViewNotFocusable]
None
None
None
magic? !
None
None
None
None
None
None
.sectioned
.inset
Project Setup
Project Setup ViewController.swift RSSParser.swift RSSEntry.swift iTunesClient.swift
Project Setup E