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
310
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
200
Good Intentions II: Enemy of the State
jaythrash
1
330
Adventures in Multipeer Connectivity
jaythrash
0
160
Good Intentions: A Path to Better View Controllers
jaythrash
0
510
App Prototyping 101: From Paper to Product
jaythrash
1
270
AltConf 2014: Interaction Prototyping with Origami & Quartz Composer
jaythrash
1
120
Peer Pressure: Adventures in Multipeer Connectivity
jaythrash
0
230
Xcode Alchemy
jaythrash
3
190
Prototyping with Origami
jaythrash
1
860
Other Decks in Technology
See All in Technology
タイミーのデータ活用を支えるdbt Cloud導入とこれから
ttccddtoki
1
300
comilioとCloudflare、そして未来へと向けて
oliver_diary
6
460
駆け出しリーダーとしての第一歩〜開発チームとの新しい関わり方〜 / Beginning Journey as Team Leader
kaonavi
0
130
Amazon Q Developerで.NET Frameworkプロジェクトをモダナイズしてみた
kenichirokimura
1
200
.NET AspireでAzure Functionsやクラウドリソースを統合する
tsubakimoto_s
0
190
JAWS-UG20250116_iOSアプリエンジニアがAWSreInventに行ってきた(真面目編)
totokit4
0
140
20250116_自部署内でAmazon Nova体験会をやってみた話
riz3f7
1
100
生成AIのビジネス活用
seosoft
0
110
「人物ごとのアルバム」の精度改善の軌跡/Improving accuracy of albums by person
mixi_engineers
PRO
1
130
TSのコードをRustで書き直した話
askua
3
340
AWSサービスアップデート 2024/12 Part3
nrinetcom
PRO
0
150
KMP with Crashlytics
sansantech
PRO
0
250
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.6k
A better future with KSS
kneath
238
17k
BBQ
matthewcrist
85
9.4k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Scaling GitHub
holman
459
140k
YesSQL, Process and Tooling at Scale
rocio
170
14k
Embracing the Ebb and Flow
colly
84
4.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Adopting Sorbet at Scale
ufuk
74
9.2k
GraphQLとの向き合い方2022年版
quramy
44
13k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
52k
Optimizing for Happiness
mojombo
376
70k
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