I have a large app that I will need some time to optimize for iOS9.
Edit: What I am worried about is all the UI getting squeezed together when the app window size is reduced. So my question is, is there any way to force full screen for the app?
To opt-out (disable) multi-tasking for your application:
Select your Target → General Section → Scroll Down and
check Requires full screen
It gets applied to the plist's UIRequiresFullScreen key value.
Note: Apps are required to support all screen orientations if it supports multitasking. Otherwise, apps will get the following error on publishing:
Invalid Bundle. iPad Multitasking support requires these orientations: ...
You have to modify your project to support multitasking. According to WWDC 2015 video, to adopt your app for multitasking, satisfy these requirements:
Build your app with iOS 9 SDK
Support all orientations
Use Launch Storyboards
So, if any of this is not done yet, your app will not be able to support multitasking.
Of course, if you don't use size classes, put it at the top of the list.
Edit: according to you question edit. There is a UIRequiresFullScreen key in Info.plist. See more at Apple docs
To 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.
You can set above thing using General tab of Targets, Select Requires Full Screen check. Refer below image for the same
Note :
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.
See Adopting Multitasking Enhancements on iPad - Slide Over and Split View Quick Start.
It's still possible to opt-out of iPad multitasking — but Apple announced at WWDC 2019 that in April 2020, all iPad apps will be required to support multitasking.
The original announcement and discussion is in the first few minutes of "Modernizing Your App for iOS 13", and there's a (brief) announcement on their developer-news site as well.
Related
I'm trying to port iOS Unity Game for the new Apple Silicon Mac. For supporting window resizing and fullscreen, I just set UIRequiresFullScreen to false, it works well on the Apple DTK.
But the slide-over and split automatically enabled with the plist property modified. The ARM Mac version runs on the iPad scheme, but we don't want the split and slide over feature enabled for iPad device. Can I disable the Split view feature programmatically when the device is determined not running on Mac?
It would be appreciated if anyone can give some ideas...
if (![NSProcessInfo processInfo].isiOSAppOnMac){
// code to disable split view and slide over
}
Programmatically, it is not possible for iPad. This is just plist value that can't be changed at runtime. You use case is valid You can raise a bug with apple, they might lok into it. they may introduce different plist for mac, or some other way around it. Right now at runtime this is not possible.
I'm developing a universal iOS app that has some settings that make no sense for certain devices. Specifically, I'd like to hide certain settings from the user on devices where the portrait width is below a threshold. (So, for instance, some settings should not be available on an iPhone 7 but should be available on an iPhone 7 Plus.)
I'm aware that it's possible to have different settings for iPhone and iPad devices (as described in this thread), but that's not what I'm after. I'm also familiar with size-class-specific layouts, but that doesn't seem applicable to settings.
Is it possible to hide (or at least disable) certain settings based on the dimensions of the device on which the app is running?
Along the same lines, is it possible to have the default values for settings vary according to the display dimensions?
Sorry but it's impossible. You are right that all that you can is to have different settings.bundle for iPads and iPhones. Since iOS 4 Settings plists can be device-dependent: Root~ipad.plist will be used on iPad and Root~iphone.plist on iPhone. If not existed, Root.plist will be used.
So from my point of view you can achieve part of your goal using this 2 settings filed. For more specific cases you can set some default values when app launched. Settings.bundle can't be modified directly from code, so you can't remove or disable specific setting but you can change it value to some default value on specific device. Each item in Settings.bundle is paired with key in NSUserDefaults so you can just set values in NSUserDefaults and the settings application will automatically reflect this. It will be saved elsewhere, though. You can just read it back the same way as you would do with the settings bundle, also through NSUserDefaults.
You can find code example in this answer https://stackoverflow.com/a/32648047/5285151
One more interesting option is to use https://github.com/futuretap/InAppSettingsKit which add same with native settings interface in to the app. And this internal settings synched with device settings but you have more control on it.
I tried to implement the Multitasking feature Apple provided using AIR application, but I seem to miss something.
I did the following as apple recommended:
Compiled the app with iOS9 SDK.
All orientation implemented.
Storyboard added.
Still I do not see the vertical bar that divides the two app's for multitasking.
Let me know if you implemented this successfully in any third party apps?
All 3 listed steps are correct. Please also make sure Requires Full Screen is set to NO. It works perfectly for me.
Please let me know if you (or anyone else) still have trouble with Split View support.
What iPad are you using to test your app? Not all iPads support this behavior. This table shows which iPads support Slide Over, Picture in Picture and Split View:
Documentation from Apple for more information.
By the way how did you manage to use launch screen storyboard with Adobe AIR application?
Split screen wasn't working for me because even though I had a Storyboard, I wasn't using it. Make sure your Launch Screen File is set, and your Launch Images Source is blank.
Check off Portrait, Upside Down, Landscape Left, and Landscape Right under Deployment Info. Also make sure that Requires full screen is not checked off.
Finally you should double check that your Info.plist is correct. UIRequiresFullScreen should be NO. Supported interface orientations and Supported interface orientations (iPad) should have all 4 orientations.
I am using XCode 7 (Beta) to test multitasking, but I could not get a way to test with it.
I just want to make sure is there anyone like me, who facing the same issue.
You can test it.
Just run ios simulator iPad Air 2 (ios 9)( because only this device supports Split View) and swipe from right to left near of middle edge of the screen
To adopt Multi-Tasking in your app, just make sure all below points followed:
Require XCode 7 (Beta 4) and later for having look in to the simulator through choosing iPad Air 2 because only this device supports Split View.
Provide a LaunchScreen.storyboard file ( instead of a .png image file as we did in iOS 7 and earlier).
In your project’s Info.plist file, in the “Supported interface orientations (iPad)” array, declare support for all four device orientations.
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. You can do this in the property list editor or in the General > Deployment Info area in the target editor.
Select storyboard, click the File Inspector icon in the right side bar. check the box next to Use Size Classes.
Reference Link
To adopt Multi-Tasking in your app. apply the following points:
Support all orientation from the target's General section in settings.
In the General section too. remove the check next to Requires full screen if any.
Select storyboard, click the File Inspector icon in the right side bar. check the box next to Use Size Classes. Check out tutorials how to use size class to adjust your views according to the screen size assigned to your app.
Then, run the simulator. Do a small drag from the right. An arrow will
appear. do a strong drag from it towards the centre.
I don't use a storyboard/xib for launch screen and get these errors in Xcode7+.
- All interface orientations must be supported unless the app requires full screen.
- A launch storyboard or xib must be provided unless the app requires full screen.
Starting from iOS9 and Xcode 7 you are required to provide a LaunchScreen.storyboard for your launch screen in order to support the new multitasking feature on iPad.
To opt out of being eligible to participate in Slide Over and Split View, add the UIRequiresFullScreen key to your Xcode project’s Info.plist file and apply the Boolean value YES.
Find out more on Apple's reference (check last paragraph) or watch session 205 Getting Started with Multitasking on iPad in iOS 9 # 10:35.
Set Requires full screen to YES in your target.