UIImageView in storyboard not showing on device and simulator - ios

I have a UIImageView in storyboard. I have placed a .png image in .xcassests folder. I have correctly assigned the image name to the UIImageView which correctly shows in Xcode Storyboard. However when I run it on device/simulator, there is no image displayed. When I create the UIImageView in code then the image is displayed. My project code is in Objective-C
I have tried the following already
Clean Xcode project
Cleared Derived Data
Closed Xcode and restarted device/simulator
Deleted all images from .xcassets and reassigned
However none of the above has worked for me so far. Any suggestions are highly appreciated.

Well, it should work from what you implemented see. Xcode gets weird sometimes when it comes to referencing resources. I recommend removing the images, clean and build if possible remove the view controller and add again. See if it works.

Seems like there is no issue with the implementation part. Try adding clips to bounds to imageView

In case other people find this issue and struggle with it. The solution is simple.
Select your XCAssets Container:
Then select your target membership in the right hand panel

Right click on the image in Xcode, go to File Inspector, and check the checkbox under "Target Membership". This might help.
Set the alpha of imageView as 1 instead of 0.

Related

How to setup launch Screen for universal correctly?

I have no idea how to solve my launch screen for iPad. I purposely created a new project which supports for universal. Same image name but it works for new project but my old project its not displaying out. it shows a white blank screen. May I know what is the reason?
Make sure that your LaunchScreen file is selected in the Project General Settings, like so:
Also, if you're using a storyboard for your Launch Screen, make sure there the only view controller is set as initial view controller., like so:
EDIT:
So if restarting the device did not work for you, try the following:
Re-adding the image into your Assets.xcassets.
Renaming the image.
And from this answer, https://stackoverflow.com/a/35481616/3231194, try unchecking the Clears Graphics Context of your UIImageView.
If you're using PNG image, make sure that Alpha is unchecked while saving the image.

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 Xcode LaunchScreen Storyboard not displaying

I'm trying to use Xcode's LaunchScreen storyboard as my launch screen? All the questions that have previously been asked about this refer back to the old launch image or .xib method - trying to do it now with the new LaunchScreen storyboard that Xcode automatically generates instead. I've selected the LaunchScreen storyboard as my launch screen file in my Deployment Info:
The storyboard itself confirms that it is set as the launch screen in it's file inspector.
And the info.plist file reflects this as well.
And yet, it doesn't work. The LaunchScreen storyboard never shows - it just goes straight to the first screen in my main storyboard. Using Xcode 7.2 and deploying to iOS 9.
Enable these two settings for the LaunchScreen.storyboard
If you are using xcode 11.2 you'll need to remove the app and execute it again to see the launch screen. I have to do this every time I modify the launch screen in order to see the new changes.
Another thing to make sure is that Launch Screen File is set to Launch Screen.storyboard
**Delete the app from the device. Re-run. **
In my case I had all the suggested settings set correctly but continued to have the original blank launchscreen. In the spirit of AmJa's suggestion regarding a "cache" problem, I deleted my app from my device and reinstalled. Reinstalling did the trick for me on both my devices and simulators.
In case anyone else runs into this issue, I resolved it by simply deleting the ViewController on my LaunchScreen storyboard (leaving me with an empty storyboard), creating a new ViewController and resetting the Storyboard entry point to that new ViewController. There may be some sort of bug with XCode 7.2 with respect to the LaunchScreen storyboard and default entry point into the auto-created View Controller, but then again, I've tried replicating this 3 times and it hasn't ever repeated itself, so maybe not.
In storyboard, in ViewController scene, I had to check Is Initial View Controller for storyboard to be seen as Launch Storyboard.
Suprisingly this is not checked when you add first View Controller. Xcode 11.
Just in case it helps someone.
Scenario, I created my new project and copied a old Launch Image from another project. And then started getting the launch image but when I wanted to change it to new image then still i was viewing the old image it was stuck for ever as launch image no matter what I do.
Then I reset my Simulator and restarted my iPhone and there you go I stared getting the new image. This looks like that somewhere in the documents or cache the devices store the old image until you reset the phone.
Thanks
As #abanet, mentioned in his answer, anyone who uses Xcode 11.2 and above, they have to delete their app and launch it again to see launch screen changes. It's not reflecting immediately. It looks like a bug from Xcode definitely not an intension.
How to fix for Xcode 11.0 and above:
Do this: https://stackoverflow.com/a/41287094/2190175 if you haven't already, and after that:
Delete app from device / simulator
Restart device / simulator
Reason: Launch Screen part of storyboard is cached during development and doesn't change until you remove app from device / simulator and reinstall it completely.
Other solutions didn't work for me, but this did:
Toggle on and off Device Orientation (e.g. support Upside Down) and Hide Status Bar in General.
I'm not sure which one did the trick, but it's working now.
If you don't see anything and your Launchscreen.storyboard only has an ImageView in it, then it might actually be showing the storyboard but not the image. Try putting a button in it or something. I've discovered that my Launchscreen.storyboard is actually showing but won't show any images and I don't know why.
The issue can be also that the "LaunchScreen.storyboard" is not added to this target.
To fix this open "LaunchScreen.storyboard" then press on "File Inspector" and under "Target Membership" add it to the needed target.
I tried everything mentioned here, the only thing that worked for me was creating a new LaunchScreen file. I'm using Xcode 12.1
(Don't forget to update the reference in the targets settings)
I was banging my head against a wall with this since Xcode 10.1 does not include a launch option for the new 11" iPad Pro when you create a new iOS Launch Image set, and without it, the iPad Pro doesn't display correctly, leaving me no choice but to get this working with a Launch Screen storyboard.
I tried combinations of so many things, but I wanted to post what ended up making it work 100% of the time (which was, in fact, a combination of a number of things).
As you have no doubt read, for the UIImageView within the Launch Screen storyboard, you should NOT include the extension (.jpg or .png). So many posts say that, but leave out that the reason is that you should create a new image set within Images.xcassets (NOT Launch Screen image set, but just image set) and name it whatever you want (for instance, "Launch-Default"). Then, drag and drop the desired .jpg or .png into the new image set. You will then use the name of that image set within the UIImageView in the storyboard and everything should work fine (the image should even show up inside of Interface Builder).
Also, within the General settings for the project, make sure to set the Launch Screen File to your new storyboard.
You need to add App orientation specific Launch Screen.
LaunchScreen Portrait: https://app.box.com/s/hfoeuvsy68iu913keb8p5hs1z9fdz3jk
LaunchScreen Landscape : https://app.box.com/s/o9q5nkrvk2ewdh57oiiar85zf658olgj
Drag LaunchScreen.storyboard & LaunchScreenBackground.png to Xcode sidebar. Then specify LaunchScreen in Xcode General page. See attach image
In my case, the problem was that the image for the logo was taken from a different target. Make sure that the image is from the main target of the application, and reset the simulator via menu Device/Erase All Content ad Settings...
In my case a few image views cover the whole parent view of the launch screen (e.g. pinned to the view edges). I had to uncheck the Resize view from NIB in the Attribute inspector for the launch storyboard and finally it worked for me (just do not forget to manually delete the old app from the simulator)
In my case the background color of the view (full screen) was set to a "missing" color literal! After trying all above of course ;(
A jpg image does a problem change the extension to png or use another png image
Worked like a charm for me
in xcode9 swift4 LaunchScreen storyboard, use .jpg image & uncheck clear graphics context for imageview. it's absolutly working.

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.

PNG Image of my UIImageView doesn't not appear, but another PNG image appears

Yes it is very strange.
It as nothing special. From Interface Builder, i select it as Image, then the image appears in nib in xcode. But when i run it on my device, the image does not appear. If i select "yellow" as background of my UIImageView, the yellow backround appears instead of the image.
And if i select another picture as "image" of the UIImageView, it works. All are PNG format.
Everytime i run the app on the device, i do a "clean" before i build.
Here is the picture which doesn't work.
Any idea ?
So wierd ...
OK i found the solution.
Right click on the image in Xcode, go to File Inspector, i had to check the checkbox under "Target Membership"
Maybe you have just added a reference to that image and not added it to the project folder.
something similar happened to me, what i did was closed xcode, change the folder name of the project, open it again and build, and worked
I had the same issue with Xcode 5 the other day – my solution was to remove the image files from the project completely, close Xcode, then re-add them. You could also use Asset Catalogs and it should fix the issue.

Resources