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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Jay Thrash
September 11, 2013
Technology
340
1
Share
Airplay: Creating Apps with (Split) Personality
My presentation on Airplay given at 360iDev 2013 in Denver, CO
Jay Thrash
September 11, 2013
More Decks by Jay Thrash
See All by Jay Thrash
Dare to Be Square: Building Adaptive iOS Interfaces
jaythrash
1
230
Good Intentions II: Enemy of the State
jaythrash
1
350
Adventures in Multipeer Connectivity
jaythrash
0
190
Good Intentions: A Path to Better View Controllers
jaythrash
0
540
App Prototyping 101: From Paper to Product
jaythrash
1
300
AltConf 2014: Interaction Prototyping with Origami & Quartz Composer
jaythrash
1
140
Peer Pressure: Adventures in Multipeer Connectivity
jaythrash
0
250
Xcode Alchemy
jaythrash
3
240
Prototyping with Origami
jaythrash
1
880
Other Decks in Technology
See All in Technology
はじめてのDatadog
kairim0
0
180
TROCCOで始めるクラウドコストを民主化するためのFinOps
tk3fftk
1
270
なぜハノーバーメッセに行くべきなのか 〜初参加だから語れること〜
tanakaseiya
0
160
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development
yoshidashingo
0
210
プラットフォームエンジニア ワークショップ/ platform-workshop
databricksjapan
0
110
基礎から解説!Icebergで紐解くSnowflake×Databricks連携の現在地
cm_yasuhara
0
370
開発を止めない CI/CD ~CI Visibilityによる継続的最適化~
pensuke628
0
160
エンジニアは生成AIと どのように向き合うべきか? ことばの意味という観点から
verypluming
3
290
oracle-to-databricks-migration-with-llm-and-dbt
casek
0
350
OpenID Connectによるサービス間連携
takesection
0
140
Javaコミュニティをもっと楽しむための9箇条
takasyou
0
420
『家族アルバム みてね』における インシデント対応との向き合い方 / Approach incident response in Family Album
kohbis
2
240
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
0
8k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.7k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
It's Worth the Effort
3n
188
29k
Crafting Experiences
bethany
1
160
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
200
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
290
Everyday Curiosity
cassininazir
0
210
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
820
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
55k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
200
sira's awesome portfolio website redesign presentation
elsirapls
0
260
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