Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Airplay: Creating Apps with (Split) Personality

83231ffaec4a72ef96d26526872961ac?s=47 Jay Thrash
September 11, 2013

Airplay: Creating Apps with (Split) Personality

My presentation on Airplay given at 360iDev 2013 in Denver, CO

83231ffaec4a72ef96d26526872961ac?s=128

Jay Thrash

September 11, 2013
Tweet

Transcript

  1. AirPlay: Creating Apps with (Split) Personality 360iDev September 2013 Denver,

    CO Jay Thrash @jaythrash jaythrash.com Wednesday, September 11, 13
  2. Airplay Modes Images: http://www.apple.com/airplay/ Wednesday, September 11, 13

  3. Airplay Modes Images: http://www.apple.com/airplay/ Wednesday, September 11, 13

  4. Airplay Modes Images: http://www.apple.com/airplay/ Wednesday, September 11, 13

  5. Agenda •Detection •Interrogation •Initialization •Implementation Wednesday, September 11, 13

  6. Detection (Active) Wednesday, September 11, 13

  7. Detection (Active) if ([[UIScreen screens] count] > 1) { //

    You have an external screen! } Wednesday, September 11, 13
  8. Detection (Passive) Wednesday, September 11, 13

  9. Detection (Passive) [center addObserver:self selector:@selector(screenConnected:) name:UIScreenDidConnectNotification object:nil]; Wednesday, September 11,

    13
  10. 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
  11. Demo PhotoScroll w/FingerPrints Wednesday, September 11, 13

  12. Interrogation (screen characteristics) UIScreenMode • size (resolution) • pixelAspectRatio Wednesday,

    September 11, 13
  13. Interrogation (screen characteristics) Wednesday, September 11, 13

  14. Interrogation (screen characteristics) [UIScreen screens][1].availableModes; Wednesday, September 11, 13

  15. Interrogation (screen characteristics) [UIScreen screens][1].availableModes; [UIScreen screens][1].preferredMode; Wednesday, September 11,

    13
  16. Initialization (do my bidding!) Wednesday, September 11, 13

  17. Initialization (do my bidding!) externalScreen.currentMode = selectedMode; Wednesday, September 11,

    13
  18. 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
  19. Demo MultiScreen Wednesday, September 11, 13

  20. 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
  21. Implementation Perfomance App? (Game) • UIScreenOverscanCompensation handles pixel loss at

    screen edges • displayLinkWithTarget:selector sync drawing with refresh rate Wednesday, September 11, 13
  22. Simulator → TV Out is your friend! Wednesday, September 11,

    13
  23. Demo Phamily Pheud Wednesday, September 11, 13

  24. Wednesday, September 11, 13

  25. Wednesday, September 11, 13

  26. Wednesday, September 11, 13

  27. Demo Phamily Pheud Wednesday, September 11, 13

  28. Don’t Forget... A+++!!! Would watch again! Wednesday, September 11, 13

  29. Don’t Forget... No Angry Birds demo. Lame. Wednesday, September 11,

    13
  30. 360iDev September 2013 Denver, CO Jay Thrash @jaythrash jaythrash.com Thanks!

    Wednesday, September 11, 13