125

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

Community
  • 1
  • 1
Mojtaba
  • 6,012
  • 4
  • 26
  • 40

17 Answers17

202

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)

bobobobo
  • 64,917
  • 62
  • 258
  • 363
Gruntcakes
  • 37,738
  • 44
  • 184
  • 378
  • 1
    What should be the contents of LaunchScreen.storyboard? I get an error saying OSX storyboards do not support target device "iphone" – adamF Sep 24 '15 at 21:01
  • 4
    You do not need a LaunchScreen file. Another option is to provide the needed launch images for each supported screen size. – rmaddy Sep 26 '15 at 18:36
  • i have same issue while open app in iOS 9.1, but my issue was resolve by adding the launch screen images for all the resolution, thanks to @rmaddy – g212gs Dec 11 '15 at 13:33
  • 6
    In my case I need change "Launch Screen File" to MainStoryBoard if you don't have Launch.screen.storyboard to make it work – Evan Lin Dec 22 '15 at 03:25
  • @Sausage Our application is working on zoom mode(no launch screen, no launch images, no constraints, just default-568h@2x). so how can we support iphone x? – Tejas Ardeshna Sep 15 '17 at 14:02
  • This worked for me, but not exactly as above. I started my app in Xcode 13 beta, but need to move to Xcode 12 so I can submit it. What it did was unselect the device orientations and removed the Launch screen file. So although I had a launch screen it was not hooked up. – Lucas Dahl Jul 12 '21 at 20:01
31

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/

dreamer.psp
  • 615
  • 7
  • 12
  • 2
    This worked for me and seems like a much better solution than adding a random new storyboard to your project. – Jeremy Oct 23 '15 at 00:48
  • 1
    If the project is Parse IOS swift starter project, Go to Target->General->App Icons and Launch Images and the "Launch Screen File" dropdown value is empty. So choosing the "Main.storyboard" will resolve the "black bars on top and bottom" issue. – sfbayman Dec 06 '15 at 16:50
  • This solution will not work if you need to provide custom view for launch image or your launch image is different from storyboard initial view controller. – Himanshu Mahajan Dec 16 '15 at 12:27
17

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

smapps
  • 320
  • 3
  • 6
6

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

Community
  • 1
  • 1
6

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.

Alok Subedi
  • 1,601
  • 14
  • 26
2

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

Himanshu Mahajan
  • 4,779
  • 2
  • 36
  • 29
2

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 .

VDPATEL
  • 416
  • 3
  • 18
2

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)

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

bobobobo
  • 64,917
  • 62
  • 258
  • 363
1

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

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.

d.rozumeenko
  • 126
  • 2
  • 3
1

Swift 4.2

select LaunchScreen.storyboard if its empty

enter image description here

Shakeel Ahmed
  • 5,361
  • 1
  • 43
  • 34
0

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!

Wils
  • 1,211
  • 17
  • 31
0

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

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.

Roman Podymov
  • 4,168
  • 4
  • 30
  • 57
0

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.

Dharman
  • 30,962
  • 25
  • 85
  • 135
0

My app is written in python kivy. This is what I did. It worked.

  1. 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.
  2. Once you have the full set, usually 2 folders - AppIcon and LaunchImage folder. Open your Xcode project, General > AppIcon and Launch images.
  3. 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).
  4. 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'
  5. Leave 'Launch Screen File' blank. This is very different from previous Xcode version.
  6. 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.

Jesscralett
  • 41
  • 10
-1

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.

Shubham JAin
  • 593
  • 8
  • 15