Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Airplay: Creating Apps with (Split) Personality
Search
Jay Thrash
September 11, 2013
Technology
1
320
Airplay: Creating Apps with (Split) Personality
My presentation on Airplay given at 360iDev 2013 in Denver, CO
Jay Thrash
September 11, 2013
Tweet
Share
More Decks by Jay Thrash
See All by Jay Thrash
Dare to Be Square: Building Adaptive iOS Interfaces
jaythrash
1
210
Good Intentions II: Enemy of the State
jaythrash
1
340
Adventures in Multipeer Connectivity
jaythrash
0
170
Good Intentions: A Path to Better View Controllers
jaythrash
0
520
App Prototyping 101: From Paper to Product
jaythrash
1
280
AltConf 2014: Interaction Prototyping with Origami & Quartz Composer
jaythrash
1
120
Peer Pressure: Adventures in Multipeer Connectivity
jaythrash
0
240
Xcode Alchemy
jaythrash
3
220
Prototyping with Origami
jaythrash
1
870
Other Decks in Technology
See All in Technology
SREとソフトウェア開発者の合同チームはどのようにS3のコストを削減したか?
muziyoshiz
1
100
Why Governance Matters: The Key to Reducing Risk Without Slowing Down
sarahjwells
0
110
生成AIとM5Stack / M5 Japan Tour 2025 Autumn 東京
you
PRO
0
220
pprof vs runtime/trace (FlightRecorder)
task4233
0
170
小学4年生夏休みの自由研究「ぼくと Copilot エージェント」
taichinakamura
0
310
Access-what? why and how, A11Y for All - Nordic.js 2025
gdomiciano
1
110
Azure Well-Architected Framework入門
tomokusaba
1
310
SOC2取得の全体像
shonansurvivors
1
400
LLM時代にデータエンジニアの役割はどう変わるか?
ikkimiyazaki
1
560
Goにおける 生成AIによるコード生成の ベンチマーク評価入門
daisuketakeda
2
110
10年の共創が示す、これからの開発者と企業の関係 ~ Crossroad
soracom
PRO
1
360
GC25 Recap+: Advancing Go Garbage Collection with Green Tea
logica0419
1
420
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
49
14k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
580
Large-scale JavaScript Application Architecture
addyosmani
514
110k
What's in a price? How to price your products and services
michaelherold
246
12k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Site-Speed That Sticks
csswizardry
11
880
Optimising Largest Contentful Paint
csswizardry
37
3.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Done Done
chrislema
185
16k
Being A Developer After 40
akosma
91
590k
Transcript
AirPlay: Creating Apps with (Split) Personality 360iDev September 2013 Denver,
CO Jay Thrash @jaythrash jaythrash.com Wednesday, September 11, 13
Airplay Modes Images: http://www.apple.com/airplay/ Wednesday, September 11, 13
Airplay Modes Images: http://www.apple.com/airplay/ Wednesday, September 11, 13
Airplay Modes Images: http://www.apple.com/airplay/ Wednesday, September 11, 13
Agenda •Detection •Interrogation •Initialization •Implementation Wednesday, September 11, 13
Detection (Active) Wednesday, September 11, 13
Detection (Active) if ([[UIScreen screens] count] > 1) { //
You have an external screen! } Wednesday, September 11, 13
Detection (Passive) Wednesday, September 11, 13
Detection (Passive) [center addObserver:self selector:@selector(screenConnected:) name:UIScreenDidConnectNotification object:nil]; Wednesday, September 11,
13
Detection (Passive) [center addObserver:self selector:@selector(screenConnected:) name:UIScreenDidConnectNotification object:nil]; [center addObserver:self selector:@selector(screenDisconnected:)
name:UIScreenDidDisconnectNotification object:nil]; Wednesday, September 11, 13
Demo PhotoScroll w/FingerPrints Wednesday, September 11, 13
Interrogation (screen characteristics) UIScreenMode • size (resolution) • pixelAspectRatio Wednesday,
September 11, 13
Interrogation (screen characteristics) Wednesday, September 11, 13
Interrogation (screen characteristics) [UIScreen screens][1].availableModes; Wednesday, September 11, 13
Interrogation (screen characteristics) [UIScreen screens][1].availableModes; [UIScreen screens][1].preferredMode; Wednesday, September 11,
13
Initialization (do my bidding!) Wednesday, September 11, 13
Initialization (do my bidding!) externalScreen.currentMode = selectedMode; Wednesday, September 11,
13
Initialization (do my bidding!) externalScreen.currentMode = selectedMode; CGRect windowFrame =
CGRectZero; windowFrame.size = selectedMode.size; UIWindow *externalWindow = [[UIWindow alloc]init]; externalWindow.screen = externalScreen; externalWindow.frame = windowFrame; Wednesday, September 11, 13
Demo MultiScreen Wednesday, September 11, 13
Implementation UIKit App? • externalWindow addSubview: to draw elements on
externally • manually scale & position assets relative to screen resolution (@2x only applies to mainScreen) Wednesday, September 11, 13
Implementation Perfomance App? (Game) • UIScreenOverscanCompensation handles pixel loss at
screen edges • displayLinkWithTarget:selector sync drawing with refresh rate Wednesday, September 11, 13
Simulator → TV Out is your friend! Wednesday, September 11,
13
Demo Phamily Pheud Wednesday, September 11, 13
Wednesday, September 11, 13
Wednesday, September 11, 13
Wednesday, September 11, 13
Demo Phamily Pheud Wednesday, September 11, 13
Don’t Forget... A+++!!! Would watch again! Wednesday, September 11, 13
Don’t Forget... No Angry Birds demo. Lame. Wednesday, September 11,
13
360iDev September 2013 Denver, CO Jay Thrash @jaythrash jaythrash.com Thanks!
Wednesday, September 11, 13