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

Airplay: Creating Apps with (Split) Personality

Jay Thrash
September 11, 2013

Airplay: Creating Apps with (Split) Personality

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

Jay Thrash

September 11, 2013
Tweet

More Decks by Jay Thrash

Other Decks in Technology

Transcript

  1. AirPlay:
    Creating Apps with
    (Split) Personality
    360iDev
    September 2013
    Denver, CO
    Jay Thrash
    @jaythrash
    jaythrash.com
    Wednesday, September 11, 13

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. Detection
    (Active)
    if ([[UIScreen screens] count] > 1) {
    // You have an external screen!
    }
    Wednesday, September 11, 13

    View Slide

  8. Detection
    (Passive)
    Wednesday, September 11, 13

    View Slide

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

    View Slide

  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

    View Slide

  11. Demo
    PhotoScroll
    w/FingerPrints
    Wednesday, September 11, 13

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  19. Demo
    MultiScreen
    Wednesday, September 11, 13

    View Slide

  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

    View Slide

  21. Implementation
    Perfomance App? (Game)
    • UIScreenOverscanCompensation
    handles pixel loss at screen edges
    • displayLinkWithTarget:selector
    sync drawing with refresh rate
    Wednesday, September 11, 13

    View Slide

  22. Simulator → TV Out
    is your friend!
    Wednesday, September 11, 13

    View Slide

  23. Demo
    Phamily Pheud
    Wednesday, September 11, 13

    View Slide

  24. Wednesday, September 11, 13

    View Slide

  25. Wednesday, September 11, 13

    View Slide

  26. Wednesday, September 11, 13

    View Slide

  27. Demo
    Phamily Pheud
    Wednesday, September 11, 13

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide