120
votes

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)

enter image description here

16
I have the same problem on iPhone 6 just after upgrading to iOS 9 - aledalgrande
Are you using navigation or tab bar controller in your app? - Ing. Ron
@RonWood Both actually. - Mojtaba
Quick fix: Under Project/Targets/"App Icons and Launch Images", for App Icon source choose "AppIcon" (ie use ASSET CATALOG), then delete all [email protected] style launch screen files. Clean, build, should be full screen on every device - bobobobo

16 Answers

197
votes

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

launch screen creation

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)

30
votes

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/

17
votes

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. Application with black bars on top and bottom solution

6
votes

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!

xcode 7.2

2
votes

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 :-)

2
votes

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 .

2
votes

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. enter image description here

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. enter image description here

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.

1
votes

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.

1
votes

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.

1
votes

Swift 4.2

select LaunchScreen.storyboard if its empty

enter image description here

0
votes

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:

  1. Copied my launch images to another folder
  2. Removed the existing LaunchImage asset
  3. Added a new LaunchImage asset
  4. Added the images to the new LaunchImage

That's it!

0
votes

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

0
votes

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.

0
votes

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 "[email protected]", "[email protected]". Now you don't have to do that anymore. You need to delete those "[email protected]" 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)

launch screen creation

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"

select your launch screen

0
votes

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"

enter image description here

It did the trick for me.

-1
votes

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.