The WWDC 2018 video Adding Delight to your iOS App shows how to support external displays.
Test to see if there is more than one screen available.
UIScreen.screens.count > 1
Observe screen connect or disconnect notifications.
let notificationCenter = NotificationCenter.defaultnotificationCenter.addObserver(self,selector: #selector(connectScreenHandler),name: UIScreen.didConnectNotification,object: nil)notificationCenter.addObserver(self,selector: #selector(disconnectScreenHandler),name: UIScreen.didDisconnectNotification,object: nil)
Add the external screen and window. Configure the window then make it visible.
if let externalScreen = UIScreen.screens.last {
externalWindow = UIWindow()
if let thisWindow = externalWindow {
thisWindow.screen = externalScreen
configureExternalWindow()
thisWindow.isHidden = false
}
}
Remove the window and free up resources when disconnecting from the external display.
externalWindow?.isHidden = true
externalWindow = nil
Create a custom UI for the external display.
// create a custom UI for the external display
externalViewController = UIViewController()
externalViewController!.view.bounds = windowBounds
externalViewController!.view.frame = windowFrame
externalViewController!.view.backgroundColor = UIColor.blue
thisWindow.addSubview(externalViewController!.view)
Build and Run. Launch the Simulator. Select Hardware, External Displays, and then a display option. You should see a custom ‘blue’ view controller show up on the external display.
Your custom UI should present ‘public’ information without any UI outlets or controls. You can create a custom view controller with an image view and present the selected image on the external display.
externalViewController?.imageView.image = image
Download the sample project.