UIImageView missing images in Launch Screen on device - ios

I have an app that supports iOS8 and later, built in Xcode 7 and I am using a XIB for a Launch Screen (I do not have launch images). The view contains a single UILabel with the app version, and 2 UIImageViews with images that are both present in Images.xcassets: A logo and a splash image.
The UILabel and the logo image appear correctly when I launch the application, but the splash image does not if I run the app on an iPad Air 2 with iOS9. I have tested on an Air and a Mini running iOS8, and iOS9 simulators for iPad 2, iPad Air, and iPad Air 2 and the image appears correctly in all of those.
I ran some basic troubleshooting to see if I could figure out what is going on but I haven't been able to solve it and the only difference I can see between the image that's working and the one that's failing is when I added it to the assets...
Here's a rundown of what I know:
The UIImageView for the splash image is in the correct place, at the correct size. I can tell this because I set its background color to green just to make sure. The view is there, but the image does not appear. So I'm assuming that the view is not to blame.
Setting the UIImageView for the splash image to also use the logo image makes the logo image appear in the correct place for the view. This also leads me to assume that the view is not to blame.
The UIImage that I am using in the splash image view is used elsewhere in the app and appears fine in those other views (the logo image is also used elsewhere in the app and appears fine). So I'm assuming that the image is valid and having it appear in other views is not a problem.
I've confirmed that the settings of the UIImages for the logo and splash in the xcassets file are the same. They are set to Universal, Any width and height, multiple scale factors, rendered as default. There is one difference - the logo has 1x, 2x and 3x scales while the splash image only has 1x and 2x, but I have also tried using UIImages with only 1x, and 1x and 2x values in the UIView and they work (if they were added to the project some time ago).
Adding another image of a different size or format (PNG and JPG) to my xcassets and using that UIImage in the UIImageView for the splash image also fails to display.
Adding another UIImageView to the XIB file and allocating it a UIImage that was already in the xcassets works, the image appears in the loading screen.
Copying and renaming the image files used for the logo and adding them to the project then using that UIImage in the splash view also fails to display.
I have tried cleaning the project, restarting the development machine, and deleting the app from the Air 2 and reinstalling it just in case that was a problem.
These last three steps lead me to believe that there's some issue with images added after a certain point in the project file's lifetime. While I updated to Xcode 7 yesterday, the splash image was originally added in Xcode 6, but the logo image (also added in Xcode 6) was added some months before.
I've looked over the json files for the logo image and splash image and they appear to have the same format. I've also trawled through the pbxproj file looking for differences and I can't see any.
So I was wondering if anyone had any idea why the launch screen might not display these new images I'm adding on the Air 2 specifically? Other questions I've been reading through relating to images not appearing all seem to relate either to Launch Images, or to images in XIB files that have associated classes, neither of which seems relevant here.

Turn it off and then on again.
Seriously, restart the device — that’s what fixed it for me.
Here’s what didn’t work:
Cleaning DerivedData.
Cleaning the project.
Uninstalling the app from the device.
Restarting Xcode.
Restarting the computer.
Older observations:
Just like the others, it:
Works fine in the Simulator
Used to work on the devices (iPhone 5S, iPad Air)
No code changes (verified via git reset --hard HEAD), yet stopped working.
What I remember triggering the first build where it stopped working was unplugging the iPhone while it was runnning. (Not sure if it’s related.)
However, the git reset not fixing it (combined with all the clean steps not working) tells me it this must be getting cached somewhere else. Quite possibly in one of the .gitignored files? (I’m using Git ignore file for Xcode projects)
One workaround that worked for one UIImageView (in the UIView that has three) but not for the others was putting the image into an .xcassets file. Reverting to the plain image file did not undo the fix. (Really feels like a caching error.)
UPDATE: See top — restarting the device is what fixed it. I get the feeling the wrong bitmap data is being cached on the device itself.
Radar: http://openradar.appspot.com/23534818

"The solution for me was simply to make sure that the "Clears Graphics Context" box is unchecked for the UIImageView in the storyboard. Just changing this fixed it for me."
No other solutions worked for me.
Got it from apple developer forum

I had exactly the same issue on an iPhone 6.
The very strange fact is that I was able to use another image from my images.xcassets which had the same size, compression, color space ...
I'm not able to find why it doesn't work but I found a solution :
Simply put your file outside your images.xcassets and use its full name (with extension) in Interface Builder
Hope this help !

The following sequence of operations fixed the issue for me on Xcode 7.3.1 and iOS 9.3.4:
Clean Your Build (⌘+⇧+K)
Close Xcode
Hard Reset iOS Device (Power + Home Button reboot)
Relaunch Xcode - let indexing finish and build on device once it is ready.

Many other answers suggest rebooting devices and / or rebuilding and / or reinstalling is the solution.
While these answers work for some of us, the reason these work is because the app is forced to "retake" or "rebuild" cached snapshots.
Cached snapshots are used by apps to present images before supporting data is loaded into memory, including the asset catalogue that contains storyboard images.
This SO answer by #jaga provides the solution, but not the reason, as to why UIImageViews are missing in the Launch Screen on device (but not in the simulator).
Background
Recently I attempted to use a custom font in my "Launch Screen.storyboard" file.
The reason I could not became clear after reading this SO answer by #TimCamber, which prompted me to do a little more research and testing.
The reason that a custom font is not included in my Launch Screen Storyboard file is the same reason an image within an asset catalogue is not included...
The app prepares portrait & landscape snapshots of the app's Launch Screen from your Launch Screen Storyboard file and (currently) saves it in your app bundle here:
/Library/Caches/Snapshots/<<app_bundle>>/ and
/Library/Caches/Snapshots/<<app_bundle>>/downscaled/.
This process is complete before any supporting files are loaded, including any custom fonts and the asset catalogue.
Solution
As mentioned above by following #jaga's solution, literally all that is required is to:
(old school) add an image file (.PNG) to your app's bundle (as you can see from the screenshot below I added the image file under the Supporting Files subdirectory in an Images subdirectory), and
reference that image in your UIImageView object in the Launch
Screen Storyboard file...

I was seeing the same problem. Rebooting the device (iPhone 6) and rebuilding the app to the device is the only thing that fixed it. I tried many other tips and suggestions but nothing else worked. Only reboot + rebuild helped.

My solution #iOS 11.x:
Use .jpg image instead of .png. I think image file size matters;
(Optionally) Put image file in project directory rather than .xcassets;

I had the same for app installed from TestFlight.
Delete app -> then restart iPhone -> then reinstall app works for me.
Just reinstall app or just restarting device didn't help.

What worked for me was to select Reset Content and Settings... from the Simulator menu

I was having the same problem, but restarting the device didn't help. What worked for me was deleting the UIImageView from my launch storyboard and adding a new one.

Have you tried turning the device off and on again? Do it.

Bring images out of Image.xcassets and add them again to project. It worked for me.

Remove app from mobile and then restart mobile and install app again. now the issues will be solved

I also had this exact problem in Xcode 7 with iPad and iPhone devices. Although it makes no sense, I was able to get around it most of the time by setting not only the Image but also the Highlighted image in the image view to the same image in my images.xcassets.

I use the iPhone 5s device, also meet this problem.
I fix it by :
Remove Drive Data
Clean the project
Restart Xcode
Remove the project from my device
Restart the 5s.
I think it's something wrong of Xcode to use memory, system may be allocate a little memory for Xcode cause Xcode drawing the lunch image failed (On my computer , Xcode have runned for several weeks without close)

it's worked for me.
First in xcode clean de project.
If you use the simulator, delete app and relaunch.
If you use a device, delete app and restart the device.

I think launchscreen only support image in Assets.xcassets.

Restarting Xcode did it for me.
What did not do it:
Clean build folder
Restart device or simulator (image wasn't visible on either)

Select the ImageView and then remove the image extension (.png or .jpg) in the attributes inspector tab > Image view > Image > Image Name.
On launchscreen.storyboard the image will not appear but it will be there in device. This worked for me.

It seemed a bug of iOS. Like sometimes the system animation disappeared.
Now I just reboot the iPhone and it is worked for me.

In my case I it was the image name.
I added an image named Default-568h#2x.png to LaunchScreen.xib - one of my old launch screens just for testing purposes. I was building on the iPhone X Simulator, the image didn't show up.
Changing the name to something neutral (MyImage.png) solved the issue.
It seems that the #2x was part of the problem as well as the -568h.
Which makes some sense on a -812h#3x device.

I have the same issue with imageView a launch screen storyboard. I removed reference of picture from project, I renamed my image and added it again to project. All works perfectly.

Also can 1. delete project image 2. change image name 3. add file image to project
It worked for me.

I had this problem in iOS 10 on an iPhone 6 and also in the Simulator. My image was in a folder and that seemed to be the issue. I removed the image from the folder in Xcode and put it in the project's base directory which solved the problem.

I experience the same. I change image resolution from 300 pixels/inch, change it to 72. It works for me.

Next helped to me:
change "Launch Screen File" to another xib
run the app
change xib back
Also very important: check that your is xib not opened in another tab, that can cause it as well!

I found a simple but radical solution that worked for me :
1 - Delete the file : LaunchScreen.storyboard and move it to trash.
2 - Product -> Clean
3 - Create a new launch screen file named : LaunchScreen.storyboard and put your images in it
4 - Save and build
That worked for me after trying complex methods for hours... It seems that my LaunchScreen.storyboard was write-locked and couldn't be saved or a weird caching process was blocking it.

This is too important
Must be empty! Launch Screen File

Image name is the problem.
Rename the image name used inside the Launch screen storyboard.
Make sure not to use any character other than alphanumeric ( don't use "_-&#")
Worked for me like a charm..

SOLVED!
The only thing that worked for me was deleting the ViewController from LaunchScreen.storyboard and create a new ViewController set to
Is Initial View Controller
Simple as that :)

Related

Launch Screen not working on iOS 14 with Xcode 12

I am very frustrated now. I upgraded Xcode to version 12 and tested my app on iOS 14. Now the problem is, that my launch screen is just showing in black. I tested it with an iOS 13.5 device and it is still working as expected. I tried to remove the launchscreen.storyboard approach and added the Launch Screen key in the info.plist, but then the image is scaled to full size.
Now I tested a little bit with the launchscreen.storyboard and I found a few things.
If I remove the Image view, the launch screen is showing as expected. I added just a label and that would work.
If I use an image from the system in the image view, it is working as well. It is just not working when I am using an image from the project.
Did you experience issues with iOS 14 and the storyboard approach?
If yes, how did you fix it?
A work around that seems to be working for me:
For a strange reason if I am downsizing the image then it is working fine. I had a full size image of dimension 2732x2732 and it didn't work. Reducing the dimension of the same image to 2400x2400 is working fine. I have tried with 2500x2500 and 2600x2600 but none worked.
Most importantly, every time I change the image I had to restart the simulator to reflect the updated image.
It didn't work on the real device yet. Like the simulator, I had to restart the device and then only it worked.
Not sure if it is something with the dimension/size of the image or with the reboot.
Further updates:
I uploaded the same build (with smaller image) to TestFlight and installed it on my device (basically updated from the previous version having large size image) and unfortunately the issue persisted :(
Now what I did is uninstalled the app and reinstalled it again from TestFlight. Issue still persisted.
Finally I had to delete the app, reboot my device and install the app again. This is when it worked fine.
So here are a lot of good ideas, but I was able to finally solve the issue - it is more like a workaround. I needed to store the picture outside the Images.xcassets folder and then it started to work again. This is a very weird issue.
A workaround is to use a button with an image instead of an imageview in the launch storyboard. It works like a charm!!
One reason might be the size of the images. Since iOS 14 images for launch screen are limited to 25 MB as stated in Apples Human Interface Guidelines.
An image with 2.400x2.400 pixel will result in a memory size about 22 MB. With 2.500x2.500 we reach the 25 MB.
We had the same problem where the full screen image in LaunchScreen.storyboard was black on all #3x devices like iPhone 12. Reducing the size of only the #3x launch image from 3.072x3.072 to 2.400x2.400 solved this problem.
A square image is the easy way to support landscape and portrait orientation. But it should also work to have different images for each orientation, where one image in total is less than 25 MB.
Had the same problem. The issue was the .png image used in the launch screen storyboard. This lead to the whole launch screen just being black.
What fixed it in our case was:
Choose a smaller image
Delete App from device/simulator
Restart device/simulator
I found that the image was the source of error by replacing the image with an other one in our app. It immediately worked with a different image (no restarting or else required).
The only workaround that works for me was to add the images outside Images.xcassets folder. After modified this and rebuild the app, it worked expected.
Some issue it's happening on the iOS 14 or XCode 12.
I encountered this problem
when using LaunchScreen.storyboard and used the image on Assets.xcassets, not working on iOS 14 with Xcode 12.
I solved it by try put change 3x image 2436×1125,and set 2x image 828×1792.
Finally I had to delete the app, reboot my device and install the app again. This is when it worked fine.
I had this, too. Pretty infuriating. My launch screen is merely a background image (2048x2048 PNG) and a graphic (2048x2048 PNG) in the middle.
The fix for me was to have a smaller middle graphic (720x720 PNG), remove the images from any assets catalogs, and add them into the project.
The images didn't show on the Simulator until I restarted it. When built and installed to my iPhone, I didn't have to restart it.
In my case, the ViewController property, "Is Initial View Controller" was not checked. Also, be sure to set the color of the view to an actual color and not a system color, otherwise you can run into issues with the device theme settings. That is, if you like to show a specific color.
Also, to access that setting make sure you click on the actual View Controller object in the drop down panel.
The only thing that worked for me was:
Delete the existing LaunchScreen.storyboard & create a new one
Check " Use as Launch Screen "
Check " Is Initial View Controller "
Make sure the image your using is NOT located under Assets.xcassets folder. I put my image in the root of the project
Delete the app, restart the simulator, and run the application
BINGO!!!
I have a similar issue with XCode12 / iOS14 and React project:
The launchscreen.storyboard was working fine in previous versions. Since update to XCode12 it shows as following:
Lauching into a black screen (2-3 seconds)
Then showing the Launchscreen correctly
If I try to use the new "Launch Screen" dictionary in Info.plist I have the follwing issues (same in another Xamarin App):
Image is zoomed in / not showing completely
Background color setting is completely ignored (tried RGB and Color.xcasset)
This is just completely bugged since Xcode 12 !
So I've had this bugged with Apple via their feedback system since June 26th 2020 - FB7795777.
I've provided my project and many diagnostic reports and they've never come back with a fix.
However, today, I fixed it.
Basically, there has been some change in the iOS/iPadOS SDK about how it's support .PNG and .JPG files (size or dimensions are the problems I think) in the Launch screen process.
The solution:
Open your .PNG file in Photoshop and re-export it with the 'Smaller File - 8-bit' option checked. It shrunk it down to less than half the size, and it worked first time.
In my case following did the job:-
Remove Launch screen file from Project -> General -> App Icons and Launch Imagees -> Launch screen file.
Go to info.plist file and open as source code.
Add following code there and change the image name:-
<key>UILaunchScreen</key> <dict> <key>UIImageName</key> <string>splash(This is your image name)</string> </dict>
In iOS 14 this new key was released (UILaunchScreen). So take care from next time. If you get error then check info.plist file.
Happy coding :)
That worked for me was:
Put xxx.pdf image into Assets.xcassets and set "scale" to Single Scale
In Launch Screen.storyboard, set the imageView's image is xxx, then set imageView's width, height, centerX and Bottom to View
Then worked for me
Xcode 12.5.1, iPhone 7 Plus, iOS 14.6
In my own case , I solved the problem in these few steps:
Image must be 1024px, then
Add to assets
-> A workaround in case you have a much bigger image, use these simple steps:
Generate your app icon
Go to the app icon folder
Copy the 1024 px of that image andappicon image
Then add to assets.
Both methods works perfectly.
This may help others so I am adding it here.
I use Cordova for my hybrid app, and then I load my image assets that are generated by Asset Catalog Creator (which is a great little product).
This was working perfectly until I updated to Xcode 12 and tried to run it under iOS 14.
What I discovered is that Cordova was adding a "CDVLaunchScreen.storyboard", and they had a "LaunchStoryboard.imageset" (directory) in their asset catalog, which contained just a contents.json file.
I simply copied this into my asset catalog, and when I drag and drop this into my updated project (newly generated each time by Cordova), my Launch Image displays again.
Don't ask my how or why Xcode magically wires this stuff together, but it worked for me.
I can pass along the contents.json that worked with my asset catalog if it will help.
BTW, my General settings screen does NOT have a Launch Screen File selected, but Xcode seems to find the required files.
I've got yet another potential solution to this, as none of the existing solutions worked for me.
I use PDF vectors in my Asset file, and this normally works great. But it turns out that it doesn't work on the launch screen - it just shows skips the launch screen entirely if it contains a PDF image.
Swapped it for a large PNG, problem solved.
What worked for me:
Use smaller images like #Darkpaw suggested. Launch storyboards are, after all, intended to be indicative of the coming UI, not artwork based.
Use PNG image (not PDF) and don't put it in an assets catalog like suggested by #Sylber
Just noting separately as I had black/broken launch mages until I did BOTH steps.
You might be seeing this issue if your #1x, #2x, #3x images are blank in your image xcassets folder.
Make sure you have images for each.
You can also select your 1 image, and set Scales as "Single Scale" in the Attributes inspector (on the right hand side)
In Xcode 13 launch screen was not displaying rather a black screen was coming.
But this worked for me Project -> General -> App Icons and Launch Images -> Launch screen file -> change Main to Launchscreen.
Most answers mentioned here are workarounds, the issue i noticed is that when you modify the launch screen assets, do check the item file name too.
Assets -> Show in folder
Then check the launchscreen items folder and make sure that the item inside the folder has the same name as folder.
To expand on Thorsten Stark's answer above...
Since iOS 14 images for launch screen are limited to 25 MB
For me it appeared to be an accumulated size of assets on my Launch Screen storyboard file. When I removed a number of them I no longer saw the black screen.
I ended up just using one image 2778 x 1284 which was 600kb in size. This solved the problem.
To further test, I duplicated the image to make 3 copies on my Launch Screen storyboard file, and sure enough, black screen again.
The best solution to me in 2022...
reduce sizes of your images, in my case:
splash.png (256x256)
splash#x2.png (512x512)
splash#x3.png (768x768)
only doing this and put them in Resources folder then reference in
ImageView work like charm....
alternative:
use Button in place of ImageView works too

LaunchScreen.storyboard bug in swift

I was using LaunchScreen.storyboard without problems.
but I changed LaunchScreen.storyboard file name to LaunchScreen2.storyboard since I hoped not to use the splash image.
(I thought it could decrease loading time)
However, I couldn't see the loading time differences.
So I renamed the file to LaunchScreen.storyboard to use splash image again.
But the problem began from here.
Even though I change images in LaunchScreen.Storyboard:-
Only black screen is shown shortly when I run my app on simulators.
Old LaunscScreen.storyboard is shown when I run the app on my iPad.
I took some.. actions but it didn't work.
(use image in Assets.cassettes, make sure Launch Screen File name in project option)
Is there anyone who can help me?
*I attached screenshots
(I'm using the latest Xcode, Version 9.1 (9B55))
I think I found out the root cause of the issue that lasted for more than a month.
At least in my case, the issue was occurred because there was no entry point in the LaunchScreen file.
After entry point was set I could see the LaunchScreen.
This is iOS issue(OS Level) iOS caching LaunchScreen.storyboard image resource and reuse it
why your action did't work because
app on simulators have not cached LaunchScreen so show black screen(LaunchScreen.storyboard not found)
iPad has cached and used LaunchScreen Resource(LaunchScreen.storyboard) so old Resource shown
Common solution is delete app or shut down and on iPhone or iPad for removing cashed resource. iOS mananing this resource in Srpingboard(OS Level) so It is not a complete solution but promotes the cache to be quickly erased from OS. just waiting.. until iOS erase it

Launch Screen storyboard not displaying image

I'm trying to get an image to display as the launch screen from my Launch Screen.storyboard file, however the image never displays. I have labels that show up fine, but the image doesn't appear.
This is how the launch screen looks in the Launch Screen.storyboard file:
However when I run the app on the simulator (as well as on the physical device) this is what shows up:
As you can see, the label "Test" shows up fine, however the image does not display. I'm really not sure why this is happening and nothing I try seems to work. If anyone has any ideas of how to fix this it would be greatly appreciated.
After restarting Xcode, cleaning the build and a number of the other suggestions on SO about this problem. What actually fixed it for me was a hard reboot of the device. (I wasted over an hour on this)
I suppose it just goes to show that the old saying have you turned it off and on again is still true for the latest gadgets!
How to reboot iPhone XS or iPhone XS Max
Quickly press and release the Volume Up button
Quickly press and release the Volume Down button
Press and hold the Side Button until the Apple logo appears
I was messing around with this for hours too. But i found the solution now. You need to add the image to your project and also to the assets.xcassets via drag and drop.
Had the same issue, adding the image to the "Build Phases -> Copy Bundle Resources" fixed it for me.
Follow below steps,
Remove application from the device
Restart device
Build again
If not working, delete derived data. Xcode Preference->Locationtab->Derived data. Then do follow above steps.
Very frustrating. Solution that finally worked:
Do hard reboot of device
Delete app
Install app from Xcode
It happened to me and makes me crazy, beyond get me lose some minutes 'til I figure it out.
So, like was said before:
Import the desired image to your Xcode project (just drag and drop it)
Change its Constraints and Alignment
Update frames resolving Auto Layout issues
In the Attributes inspector tab menu (generally in right corner menu xCode), on Image view > Image, remove image extension (.png or .jpg) - that's the trick
On the design screen, it will not appear, but when you run your app, it will be shown.
I hope it can help!
At last, restart the phone works for me!!
I have spent hours on this issue. Had tried change the images name, delete the whole image assets, modify info.plist, restart Xcode and even tried to set all the attributes of the images(which you can tell how desperate I was).
After invested a lot of time, I got the solution:-
Step 1:- Quit Xcode
Step 2:- Delete the app from device/simulator
Step 3:- Restart your device (if you are using simulator then you have to quit simulator)
Step 4:- Clear all derived data
Step 5:- Clear Bin
Step 6:- Open Xcode and relaunch the app, it will work
I faced the same problem.
Add an new imageset to XcodeAssets.
Add images to to the imageset.
Add image view to launch screen and set your imageset as image
On Imageview's attributes inspector, uncheck 'clears graphics context'
Clean the build folder and run again.
This issue is related to the Assets.xcassets to fix it you must add the image as resource but not in the xcassets folder and then should work just fine
In my case, resetting content and settings for simulator fixed the problem.
After trying everything on several StackOverflow threads, here's what worked for me:
Use a .png
Do not include it in your Assets catalog. Add it to your project's hierarchy directly, as you would add any source file.
In the image view, load the image including its extension. Example: launch_app_image.png
(Might have to clean product or derived data to update, but I didn't have to)
It seems there is some problem with resource caching in xCode. Had the same problem, restarted xCode and everything works fine after that.
Restart your device and clear x-code derived data
I had that problem after adding image to project and shotdown the device the problem solved
Was changing the background image of the splash screen and the new image wasn't showing (react native project).
Following the answers from others.
I did all the below and it was fixed:
Clean build.
Remove app from simulator
Quit simulator
Restart XCode
Run app again
Well As of now there is retina device available and I ignored #1x image in Assets.xcassets.
In my case, I have app logo in Splash screen which is not visible when I run the application.
After wasting so much time I figured out that I only provided #2x and #3x images for that logo image.
This issue is resolved by adding #1x version of that image.
In my particular case, the splash screen worked for the simulator and other devices, but stopped working for one specific device. This lead me to believe that it was some caching data kept by xcode (v10 and iPhone 7 v12.1).
I deleted the derived data at: ~/Library/Developer/Xcode/DerivedData/ only emptying the folder contents, not deleting the folder. I then rebooted the mac and the iPhone and cleaned and rebuilt the project, and now it is showing up.
I'm not sure if all of this was necessary, but didn't want to waste any more time narrowing it down, so the above sledgehammer approach worked for me. But of course it always depends on your specific situation - mine was device specific; for others it could be the actual image or launch screen layout etc.
Actually, for some heavyweight images, it isn't a good situation to add them into images.xcassets, because the app loads images.xcassets lightweight images before launch. So I put splash screen images at the first root of load and then the issue has gone:
Create a new Group in the root of the project
Drag and drop your image inside of the yellow group folder
Rename it to a different special name
Back to your xib (or storyboard) file and address the ImageView to the special name that it is in step 3.
Clean and build again, then you can see your image.
Hint: You can create your ImageSet in the images.xcassets but place them in the root of the project.
Importing images as regular files worked for me. Don't add image from assets catalog!
You have to make sure that the file name of your image has a format like .png or .jpg at the end otherwise it will not work. Also, before adding your image, you have to make sure that the image file is in your "Assets.xcassets" folder within your project. This can be done with a simple drag and drop. Also, make sure when you've added your image to your storyboard that the image name in the top left also matches the real image file name. I would try looking into Constraints too. Hope this helps. Good luck with your App.
I tried so many things with this (this thread alone seems to have a million ideas and half of them are conflicting). The problem for me was that when I did things like restarting the device and Xcode, it would cause the image to show for a few sessions of the app, and then it would stop (I have no idea why, but WOW it was annoying).
After countless hours, I found that A.G.'s answer in this thread is the correct one. The one thing I was doing wrong was that I was creating a new image set within xcassets, but I was then still using the name of the image within the UIImageView inside of the storyboard instead of using the name of the image set.
To clarify, what you would do is create a new image set and name it something like "Launch-Defaults", and then add your images to it. Then, within the UIImageView inside of the storyboard, you use the image "Launch-Default" (not including an extension since there is none since this is an image set).
When you do all of that, the image should actually appear correctly inside of your storyboard. Some people say the image will display blank if you don't use the extension (.jpg or .png), but I assume that is because they are not using the name of the image set. Others say you need to use an extension like .png or .jpg, but the key is to create the image set inside of xcassets and then use that image set inside of the storyboard. When done correctly, there should be no funkiness like an image not showing up or the Launch Screen only working some of the time (requiring a reboot).
Just to add my $0.02 to this question; I got this solved by using PNG images instead of JPG/JPEG images.
After converting the images to PNG and crunching them to reduce the size a little, everything worked fine.
My issue.
Reason: I have renamed the images after dragging into Xcode.
Solution: Don't rename images after dragging into Xcode. It creates problems for understanding Xcode. Rename images before dragging/adding into Xcode.
Hope it helps you out!
I spent hours on this problem before finally realizing my mistake. When you add an image to a UIImageView, it will use just the name of the image. If your images are in a different folder than your storyboard, they will show up in xcode but not when running the app. You must add the appropriate file path prefix, for example, images/image.png. It will now appear as a blue question mark in xcode, but it will work in the app.
I faced the same issue. Tried different solutions for that but nothing proved to be helpful. I then realised that the image was not visible only when i directly installed the app into device and the app is still connected to the xcode. If i disconnect it and then open the app the image was visible as expected.
It might be a xcode bug.
I tried cleaning the project, removing the png, removing the constraints did not work for me.
I just made one more copy of the image and renamed the copy then deleted the old image and added the new image (Same, with name changed) i just gave that image and it worked for me.
Also i am not using the Assets.xcassets, using the image in a folder.
My first mistake was, that I created a normal .storyboard, renamed it and defined it as launchscreen in the project settings. I this case I had image problems. It seems that some settings are missing in this case then, so I just created a new file via file->new and picked directly the "Launch Screen" and then it worked.
Also I had in mind that, that layout constraints are not supported in the launchscreen for some reason. Maybe it was like that in the beginning, not sure, but now constraints should work.
Maybe this helps anyone.
In my case, it was a bit more than just rebooting the device.
My launch image was stored in other Assets (Other Pods).
Had to move the image to App project's Assets.
And then rebooted my device. (Check simulator first, it should work).
Then it worked.
Images can be in format png/pdf, single scale or not doesn't matter.
I was stucked into same issue thanks to the below reference I am able to resolve the issue
https://developer.apple.com/forums/thread/19759?answerId=75438022#75438022
Though it is not necessary to change the image name and removing the extension while selecting the image for imageview, I simply created one folder named resources and added my image inside that folder coz I thought it would be not good to put images directly into the root folder
Hope this would help.
Happy Debugging!

iOS 9 xCode 7 built app displays black rectangle instead of splash screen

I know this question may seem like a duplicate of a few existing ones but its not.
I am struggling with this issue where universal (iPad/iPhone) application does not display the splash screen anymore.
Before upgrading to iOS 9 and Xcode 7, no such issues were present. After upgrading no changes were made to the splash screen in any way.
Tech data relevant to the question:
Supported devices are iPad (landscape only) and iPhone
(portrait/landscape)
I use "Launch Screen.xib" that has an UIImageView with size classes and
constraints set up so that it's always full screen.
I have added all splash screen images in image assets (except iPad
Portrait ones)
I use Xcode Version 7.0.1 (7A1001) and iOS 9.0.2
This issue does not happen on an iPad
The wrong splash screen looks like this on iPhone 5s:
This is made in portrait mode, so there are white squares on top and on bottom of this "black square".
I was struggling with this issue yesterday but I managed to fix it by renaming my launch screen to "LaunchScreen.xib" (without the space). But this morning the issue re-appeared.
Things I've tried:
Removing and creating LaunchScreen.xib again with and without space
Creating LaunchScreen.storyboard file instead of xib
Adding #2x and #3x versions of image used in LaunchScreen.xib
Removing/adding/replacing images in image assets
Cleaning, build cleaning and even deleted derived data
Restarting device, reinstalling app, relaunching without building and many other solutions that I could think of.
Nothing helped, so maybe someone fixed a similar issue already and can lead me to the right direction.
EDIT 1
So I renamed my LaunchScreen.xib image used from "Default.png" to "DefaultSplash.png". This instantly fixed all issues on iPhone. But now I have a new problem - iPad splashscreen is now black. If I set the LaunchScreen image to some other image used in project, the Ipad displays it as splashscreen without any problems, but neither Default.png nor DefaultSplash.png can be used on ipad now. This is really weird issue.
In my case the images in the "Launch Screen.xib" weren't displaying. I had to rename them and reset the new names in the nib file to make it work.
So I fixed the issue like this:
Since I renamed the file LaunchScreen.xib, it fixed an issue on iPhone but caused a similar problem on iPad. Since then, I cannot use the same image file name for the same xib (i.e. if image "Default.png" failed, it cannot be used anyomre... Bug?). So I created two files, LaunchScreen.xib and LaunchScreen~iphone.xib with separate image files for each. Now it works okay.
Seems ugly and buggy but it works.
There is a change in Xcode7 iOS 9 onwards. They have modified Launchscreen(Black screen we will get).If you change deployment target means you can see the previous launch screen. Only empty view controller is present so we have make changes on it.
As per requirement in assets add images in imagecassets.
It may sound stupid but something related to this scenario may happen:
If you hook any outlet and then break it by changing the custom class you will get this black screen behavior without any warning, instead of the typical crash from any non launch storyboard/scenes this will lead to a black screen before the app start.

Launch Screen not displaying iOS 8

I'm trying to get the Launch screen to display instead I get the default black screen.
I remember I've had this issue in the past and is something really silly but I can't remember what it is.
I have a LaunchScreen.xib. I've set in my target -> info to use LaunchScreen and not image catalog. I am running iOS 8 and using Xcode 6.1. I tried on all iPhone simulators and iPhone 4s.
I can't think what more info to give than that.
For those who are still looking for another answer here's what worked for us:
Our launch xib only contains an imageView in the middle of the view. For some reason the image never showed (but the view was there, checked it with changing the background color).
The solution was to move the image file out of the image catalog and just drop it in the project as a standalone file. Pretty strange considering when we tried other images from the catalog they appeared correctly but not this one. Anyway, I hope this helps someone!
I had the same issue.
Turned out that I had earlier tried to attach a viewcontroller file with the launchscreen. To fix:
Go to launch screen
Click Connections Inspector in right pane
Remove all connections.
Accoring to #doctorBroctor: also go to the File's Owner tab and remove the connections there.
Go to your launch screen
Go to file inspector
Check the checkbox for "Use as Launch Screen"
I have tried with:
Deleted Launch Screen File.
Tapped on Use Asset Catalog in Launch Image Source and added Splash screen Images as desired in the image asset.
Deleted Previous Project on Simulator or Device. Clear the Project.
Run Again and it is showing now.
One reason for why you might experience the black screen instead of your launch screen is that the .xib file might not get copied in your build phase. At least that was my issue that caused my app to show the black screen even though I had done the steps you describe.
So, double check that your LaunchScreen.xib (or whatever it is named) appears in:
Your target -> Build Phases -> Copy Bundle Resources
And if not, make sure to add it. That resolved my issue.
For me the problem was that I hadn't selected the LaunchScreen.storyboard in the General tab of the project settings.
I've experienced the same issue. The solution for me was simply delete the app, reboot the device, then reinstall it. I think iOS caches the Launchscreen, and this cache is not invalidated every time when it should be.
I had the same issue in iOS 9 as well. Deleting the old app in simulator alone is not enough. Simulator has to be quit launched. It worked for me.
I fix it by select the "is Initial View Controller" in storyboard.
Make sure to delete the installed app from the emulator. Then run the app again from xcode (product->clean, product->run).
That worked for me.
I've looked at all the above answers, it helped a bit. Especially the answer by Suragch put me in right direction.
The LaunchScreen.storyboard isn't showing up, even after applying simple background colour to the view and removing the image.
Firstly, I cannot see the "LaunchScreen.storyboard" as shown in the image
This was because, some reason the LaunchScreen.storyboard wasn't added to the build Target.
Solution: Ensure the LaunchScreen.storyboard is included to the build Target.
Also, Choose the LaunchScreen.storyboard from the drop down as shown in above pic.
I hope it helps someone!
I found this old post 'cause my launch screen WAS working, then it stopped. I thrashed around for a good while and then realized this, undocumented problem:
If your launch XIB or storyboard file has a UIImageView with an image whose name contains a space, the entire screen won't load.
I only had a centered UIImageView in my LaunchScreen.xib that contained an image (.png file), and had the same black screen showing.
I removed the image (the .png file) from the project, added it again with new name, and used the new image.
Make sure to use empty Launch Screen File, then Xcode would use Launch Image Source.
Make sure you have "is initial View Controller" checked in interface builder.
I tried pretty much everything else but this finally fixed the problem and now it works in simulator as well as the device.
New feature in the iOS 8 SDK: you can now use a storyboard scene in place of your app’s launch images.
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. 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 a view controller scene to the storyboard. Add some subviews to the scene and position them with constraints. When you launch the app on a device, the OS should use the scene as the launch screen.
For more information check out this blog post by Ole Begemann "Replacing Launch Images With Storyboards".
Reset Simulator working for me
For iOS 14 and newer:
Device > Erase All Contents and Settings...
For iOS 11 and newer:
Hardware > Erase All Contents and Settings...
For previous versions:
Simulator > Reset Content and Settings...
Your launch image should be a PNG. A JPEG may work under certain targets, but you should use PNG anyway.

Resources