Mac Split View App
Question: Q: Mail app randomly open in split view I'm using a MacBook with OS Mojave version 10.14.5. In full screen view ( e.g. Using Safari to watch netflix), the mail app often randomly pops up in a split view. DuMore Split Screen Multitasker is designed for your new large screen iPhone and iPads that do not have the native iOS Split Screen, Split View and Slide Over features. The DuMore Split Screen App offers an alternative experience similar to using two apps at the same time with web apps. Download Screen Split View and enjoy it on your iPhone, iPad and iPod touch. Split your big screen and use it properly. Screen Split View lets you: - Watch video and chat at the same time or what you used to do while watching 100th video at 2 AM; - Compare products from different markets on one screen without endless switching between tabs.
Follow the guidance in this chapter to get your app up and running with iOS 9 multitasking on eligible iPad models.
When you start a new, template-based project in Xcode 7, Slide Over and Split View are enabled by default. If you transition an older project to iOS 9, make your app eligible for Slide Over and Split View by ensuring your Xcode project is configured as follows:
Set the Base SDK to “Latest iOS,” as described in Setting the Base SDK in App Distribution Guide.
Provide a
LaunchScreen.storyboard
file (instead of a.png
image file as you did in iOS 7 and earlier), as described in Creating a Launch Screen File in App Distribution Guide.In your project’s
Info.plist
file, in the “Supported interface orientations (iPad)” array, declare support for all four device orientations, as shown here:
Note
If you must opt out of Slide Over and Split View, do so explicitly by adding the UIRequiresFullScreen
key to your Xcode project’s Info.plist
file and apply the Boolean value YES
true
. You can do this in the property list editor or in the General > Deployment Info area in the target editor.
Tip
A user can disable Slide Over and Split View in Settings > General > Multitasking. If you think you’ve set up everything correctly and find that these features still don’t work, check this setting.
In Slide Over and Split View, the primary and secondary apps both run in the foreground and have equal standing with the system for most purposes. Only the primary app:
Owns the status bar
Is eligible to work with a second physical screen
Can participate in Picture in Picture automatic invocation
Can occupy two-thirds of the screen in landscape orientation, obtaining a regular horizontal size class in Split View on iPad and iPad mini (the secondary app can occupy, at most, half of the screen in landscape Split View, remaining in a compact horizontal size class on iPad and iPad mini)
On iPad Pro in landscape orientation, the primary and secondary apps each obtain a regular horizontal size class in the half/half Split View configuration. All the size classes your app can encounter on iPad are shown in Figure 2-1.
In Split View, the user controls the size of your app window. The user does this by rotating the device (as in previous versions of iOS) or by horizontally sliding the vertical divider that separates the primary and secondary apps. The system communicates either type of change to your app in the same way: as a bounds change to your window with concomitant changes to your root view controller’s size classes. (User movement of the divider also figures prominently in app state transitions, as described later in this section.)
Prior to iOS 9, iPad horizontal and vertical size classes were always “regular.” With Slide Over and Split View, this changes dramatically. Figure 2-1 shows the various size classes your app can encounter as a user configures the apps on an iPad screen.
On iPad and iPad mini, the horizontal size class is compact for both apps in Slide Over and Split View—except for the single case of the primary app obtaining a regular horizontal size class in landscape 2/3–1/3 orientation (center-bottom in Figure 2-1). On iPad Pro, the horizontal size class is regular in one additional case, (upper-right in Figure 2-1). Both apps on iPad Pro in 50/50 landscape orientation obtain a regular horizontal size class.
To play well in this context, your app must be adaptive. Design your app to:
Employ Auto Layout and size classes as described in Auto Layout Guide, Size Classes Design Help, and Simulating Screen Size and Orientation.
The required
LaunchScreen.storyboard
file for your app must employ Auto Layout. New projects created using the app templates in Xcode 7 automatically get aLaunchScreen.storyboard
file. To learn how to add one to your project, read Creating a Launch Screen File in App Distribution Guide.Respond to trait collection and size changes by implementing methods in the
UITraitEnvironment
andUIContentContainer
protocols.Respond to app state transition delegate method calls, as described in Execution States for Apps in App Programming Guide for iOS.
Correctly handling your app’s state transitions is more important in iOS 9. In a Split View context, both onscreen apps move offscreen whenever the user moves the Split View divider. This is true even when the user changes intent and returns the divider to its starting position.
When the user moves the divider, the system calls your app delegate object with the applicationWillResignActive:
protocol method. The system then resizes your app (offscreen) to capture one or more snapshots to provide a smooth user experience when the user eventually releases the divider. This is because the final bounds of your app’s window, at the time the user releases the divider, cannot be predicted. Complicating the story is the fact that the user might rotate the device while moving the divider.
Write your app so this resizing/snapshotting process does not lose data model state or navigation state for the user. That is, when a user has resized your app—or moved the divider and returned it to the previous position—and finally releases the divider, the user expects your app’s state and its navigation location (including view, selection, scroll position, and so on) to be identical to what they were when the user first touched the divider. Take advantage of the applicationWillResignActive:
call to perform the work you need to preserve user state. For guidance, read What to Do When Your App Is Interrupted Temporarily in App Programming Guide for iOS.
If the user moves the divider all the way to the screen edge to dismiss your app, the system calls your applicationDidEnterBackground:
protocol method.
Macbook Split View
For guidance on gracefully handling app state transitions, read Strategies for Handling App State Transitions in App Programming Guide for iOS. For information on the snapshotting process, read Prepare for the App Snapshot, and refer to Capturing a View Snapshot in UIView Class Reference.