35
votes

I need to create and app which will run on iPhone 4S, 5,5S, 6, 6+ and the deployment target will be iOS 7.1. I saw Apple introduced LauchScreens.xib for creating the launch screen (Splash Screen) and also there is an Image Assets in which I can provide the Launch Images screens. See image below:

enter image description here

So my questions is how can I use the splash screen for all the iPhones? Or I should say, what is the standard way to to do that when I am using Xcode 6?

I have been looking for the answers and reading blogs and Apple's Documents as well but I didn't find anything. Everything was singing its own song but not the answer.

4
I don't understand. Xcode already provides hint of the resolution and format of the Launch images, and Apple documentation is already stated clearly. Just drag the images to correct placeholder.Raptor
@Raptor Then why there is LaunchScreens.xib? What is the use of that if I can use the imageAssets. This is confusing to me.Developer
Also, what should be the naming conventions for the splash screens of iPhone 6 and iPhone 6+? Please share some link for the document if that exists.Developer
There is NO LaunchScreens.xib. You created it? Splash screen does not use XIB / Storyboard.Raptor
Create new project with XCode 6.1. then check! It comnes by Default.Developer

4 Answers

68
votes

In Xcode6 for all devices splash screen you need to make splash image for each device size retina and non retina.

Best way of done this thng use asset Catalog from target-->general like following screenshot:

enter image description here

when you tap the right small arrow near of launchImage (->) you can see the following window:

enter image description here

Currently there is empty because from right side there is no any target selected so if your deployment target is 6.0 you need to set check mark like following screenshot so you can see the all image need box :

enter image description here

See when you add wrong dimension image in catalog you can get warning at top right corner and when you tap on this warning you can get actually dimension. see the following screenshot for:

enter image description here

So from the warning log you can know which dimension image need for which splash screen.

Other way

No need to use Asses Catalog and no need to use LaunchScreen.xib you can still use old way:

create splash screen image with following size:

Default-568h.png                   320 x 568      
[email protected]                640 x 1136
[email protected]                750 x 1334
[email protected]                1242 x 2208
Default.png                        320 x 480
[email protected]                     640 x 960

Now in plist you need to add following data:

  • Add one row by tap (+) its called UILaunchImages

enter image description here

  • and you need to fill this row like following

enter image description here

that's it no need to do any thing hope that answer helps to other as well.

36
votes

In Xcode 6.4, as of 2015-07-06 (yyyy-mm-dd), I used launch images rather than a launch screen file (.xib). This is targeting iOS 7.1+.

First, delete the entry from the Launch Screen File drop down. Leave this blank, if this points to a .xib the .xib will override the launch images source. Here is the setup in Target / General / App Icons and Launch Images. /Users/patrickweigel/Desktop/Screen Shot 2015-07-06 at 10.20.36 AM.png

Second, create a new Launch Image (NOT a new Image Set) after selecting the “+” at the bottom of the middle pane in Images.xcassets. Here is the pop-up after you select the “+”. enter image description here

Third, in the new Launch Image, there will be 20 squares, each asking for .png file. Now you need to create 20 .png files of the correct size. I used Pixelmator and exported each file as a .png. But what is the “correct size”? See below. enter image description here

Launch Images Correct Size Chart enter image description here '*No Status Bar

30
votes

I have been playing around Xcode 6 from sometimes now and what I found is LaunchScreen.xib works for iOS 8 only, so if you want to provides launch image for all your devices, your app supports you can do as below..

For Device using iOS 7 you can do as usual, what we used to do using images.xcassets enter image description here

For iOS 8 devices you have two ways..

  1. Simply you can use LaunchScreen.xib. enter image description here this image show how Xcode by defaults sets LaunchScreen.xib for iOS 8 launch screen file.

    1. If you don't want to set LaunchScreen.xib as launch screen file and want to display some launch image as you want in iOS 7 device, so just remove launch screen file name and make it blank(see below image) and delete LaunchScreen.xib file from Xcode. In this case iOS 8 device also takes launch image from launch images from images.xcassets. enter image description here
4
votes

The new way of doing splash screens for iOS 8 onwards is to define a LaunchScreen.xib file. This is also available as a new Resource file type in XCode 6.

This new XIB will use AutoLayout and the new size classes to determine how you want to layout your splash screen.

It is not very clear how the backward compatibility of this will work if you want to support older devices. I figure it will not work.

You can set the launch.xib in the target properties first screen in your XCode project.

If you want to use the old way you can still define splash PNGs to use as launch images, that continues to be fully supported. From what I see, this is still the only way to go if you want to support old iOS versions.

Note that if you want to support the new resolutions of iPhone 6 / 6 Plus, then you must define either a launch xib or put the correctly sized PNGs in your asset catalog, or else you will get the blurry autoscaled UI that old apps get in compatbility mode.