Xcode: use LaunchImagesSource instead of LaunchScreenFile - ios

I was previously using a single Launch Screen File, but I would now like to switch to the Launch Images Source, where I can defined the launch screen files for all devices.
I have defined the LaunchImage set, and I have left Launch Screen File blank.
However when I run the app on my iPad Mini 3, I still don't get the image I defined for the iPads.
Should I set some other values?

Confirm in your project's Info.plist that there isn't an entry for
Launch screen interface file base name
UILaunchStoryboardName
In some cases, changing from a launch screen file to xcassets fails to remove this value.

I have the same values for the App Icons and Launch Images section.
Then, the way I have setup the LaunchImage on the sidebar has both iPad portrait and landscape selected:
And have added the 4 necessary files to comply with that configuration:

Related

UIViews in iOS App being clipped with Simulator [duplicate]

Installed the app on iPhone 6 iOS9 and here is what happened. Notice black bars on top and bottom. It works just fine on iOS8. How I can fix it?
I've tried building with Xcode 6.4 & 7. Same result.
(iPhone 5 used to run iPhone 4 apps like this)
Did you migrate your app from an earlier version of Xcode? If so then Xcode is now making an assumption about your screen size and you need a way of indicating the actual screen size at run time.
There are two ways:
a) If you use a launch screen.
You are missing a LaunchScreen.storyboard file.
Create a Launch Screen object from the New File... dialog
b) If you don't use a launch screen.
Go to your Target's settings and choose General, then App Icons and Launch Images.
Now set "Launch Screen File" to your "main.storyboard" (or another storyboard if appropriate)
My App does not use a launch image.
Setting the "Launch Screen File" to my "main.storyboard" file fixed the issue for me.
This setting can be found under "Target->General->App Icons and Launch Images"
Use the following link for more information:
http://oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/
For me the problem is i'm migrating my app from earlier version of Xcode and the project is missing LaunchScreen.storyboard file. I have just created LaunchScreen.storyboard and added it to launch Screen File. This did the trick.
I'm using xcode 7.2 . At first, I created a LaunchScreen.storyboard file, as Potassium Permanganate
suggested, and it worked! However, I didn't want a launch screen, so I tried setting Main.storyboard as Launch Screen File and it did the trick!
This one is if you do not use storyboard at all.
It occurs when you remove LaunchScreen from Launch Screen File in App icons and Launch Images.
Instead of removing it from here go to info.plist and find Launch screen interface file base name and remove LaunchScreen, i.e. leave it blank.
It wont show in info.plist if you have removed LaunchScreen already from Launch Screen File. Then you can give any name in Launch Screen File and it will appear and you can remove the name.
When you migrate your app from earlier version of xCode to xCode 6 or xCode 7, you will face this issue.
For iOS 7 and earlier, developers need to provide separate launch
images for all screen sizes, resolutions and orientations their app supported.
In Xcode 6 or later, there is another option. You can specify a storyboard whose initial view controller will then be used as the app’s launch screen. Use below steps:
Create a blank storyboard file named LaunchScreen.storyboard.
Go to your target settings and, on the "General" tab, select the storyboard as your Launch Screen File in "App Icons and Launch Images" section. Xcode will add a corresponding UILaunchStoryboardName key to your app’s Info.plist. When this key is present, Xcode will prioritize it over any launch images you might have set.
Add some subviews to newly created storyboard's view and position them with constraints. When you launch the app on a device, the OS should use the scene as the launch screen.
Delete the older app from simulator and clean the project.
Cheers :-)
I have same issue in my app . In my app i have multiple targets added to project . If i use launch storyboard solution then i can see full screen but in my case my Lunch image looks blurred and stretched on iPhone 4 . To come out from this issue I have used LaunchImage asset solutions . After this still I am facing same issue .I have tried all above solutions, At end I found my png images don't include ALPHA resolutions . After adding new images ,i can see full screen images .
iOS changed the way the system detects the resolution of the iPhone. You used to have to supply a number of png images named things like "Default-568#2x.png", "Default-667h#3x.png". Now you don't have to do that anymore. You need to delete those "Default-568#2x.png" style files and move on to using a proper LAUNCH SCREEN object in your project.
To add a launch screen just go to the New File... dialog (File / New / File, or press Cmd + N)
Double click that new Launch Screen file to edit it. Be sure it is ticked "use as launch screen" in its properties.
Finally be sure to select your LaunchScreen.storyboard file under project properties / Targets / "App Icons and Launch Images"
Go to the asset catalog and create a new iOS launch Image. then in Target>General>App Icons and Launch Images>Launch Image Source you will see automatically the new Launch Image created in the assets catalog.
In my case, I have several targets in the project and each one has it's own launch screen images. The weird thing one of the targets looks fine but others have those black bars. The thing was in the name of Launch folder inside assets. Change name to LaunchImage solves the problem.
Swift 4.2
select LaunchScreen.storyboard if its empty
In my case I have one asset with launch images however it was displaying the top and bottom dark bar as well.
I've tried the launch storyboard solution and yes it works but I didn't want to add a new file so, this is what I did to fix the issue:
Copied my launch images to another folder
Removed the existing LaunchImage asset
Added a new LaunchImage asset
Added the images to the new LaunchImage
That's it!
Go to target settings in xcode in that section go to App icons and launch images section in that section select launch screen file you will find a drop down of values select CDVLaunchScreeen value against launch screen file value
I had a similar issue on an iPod. To fix this, I replaced
<key>UILaunchStoryboardName~ipad</key>
<string>LaunchScreenIpad</string>
<key>UILaunchStoryboardName~iphone</key>
<string>LaunchScreenIphone</string>
with
<key>UILaunchStoryboardName~ipad</key>
<string>LaunchScreenIpad</string>
<key>UILaunchStoryboardName~iphone</key>
<string>LaunchScreenIphone</string>
<key>UILaunchStoryboardName~ipod</key>
<string>LaunchScreenIphone</string>
in Info.plist.
I had an old app (iOS 7.4 - 8.2) and after upgrading it got the same issue (getting black empty bar at the top), I managed to solve it by:
Main.storyboard
Choose your Scene & Controller
on left menu, go to Attribute Inspector
find "Presentation" and instead of "Automatic" set it to "Full Screen"
It did the trick for me.
My app is written in python kivy. This is what I did. It worked.
The reason is that I don't have AppIcon and LaunchImage defined.
There is free website that can provides you a set of icons and
launchImages for various devices.
Once you have the full set, usually 2 folders - AppIcon and
LaunchImage folder. Open your Xcode project, General > AppIcon and
Launch images.
In the AppIcon Source, click the arrow on the right. It will go to
another page, in which you can drag and drop the two folders in
(yes, drag the folders).
Go back to the previous General tab, in the AppIcon Source, you can
select your folder, usually called AppIcon-1. And tick 'include all
icon asset'
Leave 'Launch Screen File' blank. This is very different from
previous Xcode version.
Under the deployment info, status bar style, you can tick require
full screen.
After those steps you should be good to load again.
Please note these steps are for a non storyboard app. In my case, my app is written in kivy.
Don't Do anything that are described in earlier answers...
To show view Controller follow the following single step
Step 1 : Add the splash Screen for iPhone and iPad.
After this this error will not come again.

Xcode 7 Launch Screen images dont load properly

I am trying to make some different launch screens with Xcode 7 ios9.1
for different iOS devices (iPhone iPad)
If you take a look at the following images this is what I've done
Here I have made exactly all the images dimensions that it needs and I have filled out all the table with the images. I have made this by right clicking and selecting New iOS Launch Image.
Here I have set the launch images from LaunchImage.
And here is the launch screen storyboard which I have left it empty.
Now, when I run the app, it doesn't load the loading screen.
You need to Remove one String from your project info.Plist File for Launch splash screen.
It's Launch screen interface file base name.
I attach Screenshot for remove String in .plist file
Here you saw second line just remove from Your file
In addition to Maulik Patel`s answer, I found that if you set launch images improperly, maybe you need to delete the app on your iPhone or simulator, set launch images right and rebuild it again. It works for me. Maybe there is still some cache of settings in the app.

Lock LaunchScreen.xib orientation on iPhone 6 Plus

I am using a LaunchScreen.xib to start my app. This xib must works in portrait mode (only!). Anyone knows how can I achieve that with an iPhone 6/6s Plus (they can start the app in landscape)?
I believe if you open the Attributes Inspector for the assets catalog then you need check the landscape box like image
Hope my solution help you to resolved your issue.
From the Documentation:
Launch Images
Launch images for iPhone apps are always sized to match the dimensions
of the screen in portrait orientation. For applications that launch
into landscape orientation, you should use your preferred graphics
editing software to rotate the content of the launch image while
keeping the image's size consistent with a portrait launch image
(height > width).
Avoid using asset catalogs to manage the launch images of landscape
applications. Except for launch images used by the iPhone 6 Plus,
asset catalogs assume that all iPhone launch images are for the
portrait orientation. When your application is compiled, entries for
each launch image are added to the compiled information property list
under the UILaunchImages key. The value for the
UILaunchImageOrientation key in each of these entries is always
Portrait. These entries are then ignored at launch time because the
value of Portrait for the UILaunchImageOrientation key does not match
the launch orientation (Landscape Left or Landscape Right). The result
is a blank screen during launch as the system cannot find an
appropriate launch image.
Instead, you should use a Launch File if your application only
supports iOS 8 and above. Otherwise, you will need to add your launch
images as resources to your project and then add the UILaunchImages
key to your application's information property list. Be sure to
disable use of the asset catalog for managing the launch images by
selecting 'Don't use asset catalogs' from the Launch Image Source menu
under the General tab of the project editor for your applications'
target.
For more info:
If you are not using assets, use UILaunchImages key to make changes to the launchscreenimage in your application's information property list and then edit the value under each UILaunchImageName key to match the corresponding image from your project. Do not include the extension or any modifiers (#2x, #3x). You can edit your information property list by control+clicking on it in the File Navigator and choosing Open As > Source Code from the popup menu.

Xcode 7 simulator screen size is different for iphone 6? [duplicate]

Installed the app on iPhone 6 iOS9 and here is what happened. Notice black bars on top and bottom. It works just fine on iOS8. How I can fix it?
I've tried building with Xcode 6.4 & 7. Same result.
(iPhone 5 used to run iPhone 4 apps like this)
Did you migrate your app from an earlier version of Xcode? If so then Xcode is now making an assumption about your screen size and you need a way of indicating the actual screen size at run time.
There are two ways:
a) If you use a launch screen.
You are missing a LaunchScreen.storyboard file.
Create a Launch Screen object from the New File... dialog
b) If you don't use a launch screen.
Go to your Target's settings and choose General, then App Icons and Launch Images.
Now set "Launch Screen File" to your "main.storyboard" (or another storyboard if appropriate)
My App does not use a launch image.
Setting the "Launch Screen File" to my "main.storyboard" file fixed the issue for me.
This setting can be found under "Target->General->App Icons and Launch Images"
Use the following link for more information:
http://oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/
For me the problem is i'm migrating my app from earlier version of Xcode and the project is missing LaunchScreen.storyboard file. I have just created LaunchScreen.storyboard and added it to launch Screen File. This did the trick.
I'm using xcode 7.2 . At first, I created a LaunchScreen.storyboard file, as Potassium Permanganate
suggested, and it worked! However, I didn't want a launch screen, so I tried setting Main.storyboard as Launch Screen File and it did the trick!
This one is if you do not use storyboard at all.
It occurs when you remove LaunchScreen from Launch Screen File in App icons and Launch Images.
Instead of removing it from here go to info.plist and find Launch screen interface file base name and remove LaunchScreen, i.e. leave it blank.
It wont show in info.plist if you have removed LaunchScreen already from Launch Screen File. Then you can give any name in Launch Screen File and it will appear and you can remove the name.
When you migrate your app from earlier version of xCode to xCode 6 or xCode 7, you will face this issue.
For iOS 7 and earlier, developers need to provide separate launch
images for all screen sizes, resolutions and orientations their app supported.
In Xcode 6 or later, there is another option. You can specify a storyboard whose initial view controller will then be used as the app’s launch screen. Use below steps:
Create a blank storyboard file named LaunchScreen.storyboard.
Go to your target settings and, on the "General" tab, select the storyboard as your Launch Screen File in "App Icons and Launch Images" section. Xcode will add a corresponding UILaunchStoryboardName key to your app’s Info.plist. When this key is present, Xcode will prioritize it over any launch images you might have set.
Add some subviews to newly created storyboard's view and position them with constraints. When you launch the app on a device, the OS should use the scene as the launch screen.
Delete the older app from simulator and clean the project.
Cheers :-)
I have same issue in my app . In my app i have multiple targets added to project . If i use launch storyboard solution then i can see full screen but in my case my Lunch image looks blurred and stretched on iPhone 4 . To come out from this issue I have used LaunchImage asset solutions . After this still I am facing same issue .I have tried all above solutions, At end I found my png images don't include ALPHA resolutions . After adding new images ,i can see full screen images .
iOS changed the way the system detects the resolution of the iPhone. You used to have to supply a number of png images named things like "Default-568#2x.png", "Default-667h#3x.png". Now you don't have to do that anymore. You need to delete those "Default-568#2x.png" style files and move on to using a proper LAUNCH SCREEN object in your project.
To add a launch screen just go to the New File... dialog (File / New / File, or press Cmd + N)
Double click that new Launch Screen file to edit it. Be sure it is ticked "use as launch screen" in its properties.
Finally be sure to select your LaunchScreen.storyboard file under project properties / Targets / "App Icons and Launch Images"
Go to the asset catalog and create a new iOS launch Image. then in Target>General>App Icons and Launch Images>Launch Image Source you will see automatically the new Launch Image created in the assets catalog.
In my case, I have several targets in the project and each one has it's own launch screen images. The weird thing one of the targets looks fine but others have those black bars. The thing was in the name of Launch folder inside assets. Change name to LaunchImage solves the problem.
Swift 4.2
select LaunchScreen.storyboard if its empty
In my case I have one asset with launch images however it was displaying the top and bottom dark bar as well.
I've tried the launch storyboard solution and yes it works but I didn't want to add a new file so, this is what I did to fix the issue:
Copied my launch images to another folder
Removed the existing LaunchImage asset
Added a new LaunchImage asset
Added the images to the new LaunchImage
That's it!
Go to target settings in xcode in that section go to App icons and launch images section in that section select launch screen file you will find a drop down of values select CDVLaunchScreeen value against launch screen file value
I had a similar issue on an iPod. To fix this, I replaced
<key>UILaunchStoryboardName~ipad</key>
<string>LaunchScreenIpad</string>
<key>UILaunchStoryboardName~iphone</key>
<string>LaunchScreenIphone</string>
with
<key>UILaunchStoryboardName~ipad</key>
<string>LaunchScreenIpad</string>
<key>UILaunchStoryboardName~iphone</key>
<string>LaunchScreenIphone</string>
<key>UILaunchStoryboardName~ipod</key>
<string>LaunchScreenIphone</string>
in Info.plist.
I had an old app (iOS 7.4 - 8.2) and after upgrading it got the same issue (getting black empty bar at the top), I managed to solve it by:
Main.storyboard
Choose your Scene & Controller
on left menu, go to Attribute Inspector
find "Presentation" and instead of "Automatic" set it to "Full Screen"
It did the trick for me.
My app is written in python kivy. This is what I did. It worked.
The reason is that I don't have AppIcon and LaunchImage defined.
There is free website that can provides you a set of icons and
launchImages for various devices.
Once you have the full set, usually 2 folders - AppIcon and
LaunchImage folder. Open your Xcode project, General > AppIcon and
Launch images.
In the AppIcon Source, click the arrow on the right. It will go to
another page, in which you can drag and drop the two folders in
(yes, drag the folders).
Go back to the previous General tab, in the AppIcon Source, you can
select your folder, usually called AppIcon-1. And tick 'include all
icon asset'
Leave 'Launch Screen File' blank. This is very different from
previous Xcode version.
Under the deployment info, status bar style, you can tick require
full screen.
After those steps you should be good to load again.
Please note these steps are for a non storyboard app. In my case, my app is written in kivy.
Don't Do anything that are described in earlier answers...
To show view Controller follow the following single step
Step 1 : Add the splash Screen for iPhone and iPad.
After this this error will not come again.

Splash screen not visible for iPad, only a black screen gets shown

I have an universal app. The splash screen loads fine for iPhone but the same is not visible on the iPad. Instead a black screen appears in its place. I have gone through the questions posted in this regard and have followed the steps but to no avail. I am using asset catalog in my project. Storyboards have not been used. The names and dimensions of the images used are as follows:
1. Default-Landscape.png (1024x768)
2. Default-Landscape#2x.png (2048x1536)
3. Default-Portrait.png (768x1024)
4. Default-Portrait#2x.png (1536x2048)
5. Default-568h.png (640x1136)
6. Default.png (320x480)
7. Default#2x.png (640x960)
Please let me know if there is anything wrong with the dimensions I am using. The options I have selected for the Attributes Inspector for the Launch image are given in the image below:
Following is the setting for Launch image:
I added the same launch images to a sample app and the launch screen showed up perfectly on iPad.
EDIT:
As per the suggestion of #iphonemaclover, the problem was solved using "You should also remove any other key suffixed with (iPad) or ~ipad." There was a key UILaunchImages~ipad in the plist which I removed. Now the launch screen is properly visible.
Please delete your derived data and clean the your project.
Also reset your simmulater if you running over it.
Hope it will help.
Also check you have selected Universal App in your target setting.
EDIT
You should probably be using an Asset Catalogue for your launch images, which might be what Xcode is expecting. You can see what Xcode is expecting in the General tab for your target:
MORE Suggestion
Q: Why does my app launch to a black screen on iPad?
A: Apps that have been designed only for iPhone may launch to a blank screen when run on an iPad. This is caused by the presence of an empty iPad specific storyboard in the app bundle as well as an iPad specific UIMainStoryboardFile key in the app's Information Property List (Info.plist) file. Both are automatically created by the various Xcode template projects if the Universal option is selected.
...
In Xcode
Look for a file named MainStoryboard_iPad.storyboard in the file navigator. If this file is present, remove it from your project.
In In your app's Information Property List
Look for a key named Main storyboard file base name (iPad) or UIMainStoryboardFile~ipad. If this key is present, remove it. You should also remove any other key suffixed with (iPad) or ~ipad.
Finally, test your app on an iPad or in the iPad simulator and verify that it behaves as expected.
You should add your launch image to your asset catalogue, and make sure the setting shown is configured correctly.
If you don't have one already, you can add an asset catalogue by going to File > New > File, the look under the Resource tab.
Probably not related to most people's problems but I would like to add another possible issue. I had the same problem with my project. I could see my iPad images in X-Code but what I missed was that the title underneath was "unassigned" and not "iPad Portrait" (this was probably because it was a boilerplate React Native project that was initially configured only for iPhone).
After making my app universal, I needed to recreate my LaunchImage set which then had designated placeholders for iPad. I re-added all my images, assigned the new Launch Image set, clean, build and it was fixed. Hopefully it saves someone else some time.
If you're not loading an image in your slash screen do you get the white view? If you're not getting, then your view is not loaded. That is why you're getting a black screen.

Resources