How do I get rid of sticky iPad splash screens? - iphone

Initially I developed my app as Universal. Then I designed splash screens separately for iPad. Recently I decided to deploy my app in iPhone device mode only. My app has no fancy graphics and it just looks well and works perfect on iPad either in 1x or 2x mode.
To do so I set Devices to iPhone at TARGET/Summary/IOS Application Target pane. I dragged new splash images I created for iPhone into Launch images placeholders, one for non-Retina and one for Retina displays.
However when I launch my iPhone app on the iPad, either through debugger or stand alone, the old iPad splash screens I no longer use come up. They look bad because the image centre appears to be moved down-right as they were originally created for iPad.
I went back to XCode and momentarily changed the Device type to Universal or iPad. I deleted the images both from Launch images placeholders and physically from the file system.
Unfortunately the iPad splash images I created earlier still come back when I build my app in iPhone device mode and deploy it on my iPad. How can I get rid of them once and for all and get the app use the iPhone launch images I created and setup recently?

If you deleted the images from the disk, Clean all targets (in Xcode Product->Clean) and rebuild. There should be no way after doing this that the old image will appear (if it does it means it was not deleted properly from your project).

Clean your project (Command+Shift+Option+K)
Close Xcode, go to ~/yourCurrentUser/.Library/Developer/Xcode/DerivedData
Find the folder for your project, and delete it.
Delete the app in your simulator or test device.
Now build and run the app, and that must work; if not, delete the final images once more, and repeat the above steps.
Don't forget to check your info.plist file for Icon Files key. Sometiems splash screen images get added to the Icon Files key for no clear reason! You must remove them from there.

Related

Launch images xcode issue, Iphone 6s launched app zoomed

When I launch the app through the Xcode in my Iphone 6s, the app is being launched zoomed. The specific app is already on the app store with all the assets and launch images set correctly and everything was working fine. All the resolutions were correct for all IOS devices. But now, after I launched it again through the xcode as I want to make an update the app is being launched zoomed. Any ideas why this is happening? I managed to test it only in Iphone 6s.
Happened to me when I gave a wrong resolution to the splash image (750x1134 instead of 750x1334). I guess Xcode assumes you want to use the app with that resolution overall and adapts accordingly. Was fixed when I gave the correct resolution splash image.
At least I didn't find a solution and what caused this issue, but I used the storyboard file as a launch screen which was much easier to develop.

App icon not showing up on iPhone 5 device during testing

I have a 120x120 icon image that's working fine on emulators - however when I try it on my device, the icon doesn't show up. Any thoughts?
I figured it out. This was actually really annoying. So the UI designer had simply renamed his .psd files with .png and xcode thought this was fine. However, renaming the .pngs isn't going to automatically make them real .pngs. The way I solved this was going to mac preview and exporting the files to the PNG format.
Sometimes some of the images get cached by the OS.
Delete your app completely from your mobile device (press and hold, then delete the app)
Turn off your device and turn it on again.(This ensures that the cache gets cleared)
In xCode, clean the project and rebuild.
Load the software again you your device.
You should be able to see your icon as long as its properly added to your project.
Drag your app over another app to group both into a folder. Then drag the app out of the folder.
Check your info.plist file. Make sure the icon entry looks something like this (use your own image file names of course):
If you see another "Icon already includes gloss effects" row outside, remove it.
It is not uncommon not to see your app icon on the device. However, when your app is being uploaded to the App Store, everything will be fine.
Is your iOS device running iOS7? If not, you will need to include 57x57 and 114x114 icons as well. See https://stackoverflow.com/a/18737063/1646862 for icon sizes apple requires. It is always good to include all icon sizes you may need in your iOS bundle.

Black screen instead of launch image on iPad

I am developing an iPhone app for iOS 6.1 and 7 (using Xcode 5). I have a problem with iPad launch images.
On iPad 7.0 and 7.0.2, the launch image is not showing up(in 6.1 works!): I get black screen while app is loading.
I don't face this issue with iPhone 6.1 and 7.0.2, although I set all launch images required for iPad and iPad retina (landscape and portrait) and I use Asset Catalog.
What am I missing?
Recently I faced same issue with my App designed only for iPhone , I had the problem where the launch images would not appear in iPad (On iPad ios >= 7.0.x the launch image is not showing up I get black screen while app is loading (in iPad ios < 7.0.x it works fine )).
I don't face this issue of launch image with iPhone worked fine in all iOS versions.
Solution: Is to update to asset catalog to manage your app's images and target only iOS 6 and Prior.
Steps :
Step 1:
Step 2:
Step 3: on the top right corner click on the 'Attribute Inspector' icon. Here you can set the Target OS for the Launch Images.
Uncheck the iOS 7 check boxes for iPhone, Now you should be able to see the launch images for iPad on iOS >= 7.0.x.
If you have the same situation like mine, that's solution:
My app is landscape only, iOs7 only, ipad\iphone (XCode 5).
Problem: black launch on iphone (and simulator), normal launch in ipad.
Solution: go to Images.xcassets - Launch Images - select it. Uncheck at right all "iOs7 and later" boxes. Check "iOs6 and prior" boxes and fill empty spaces with images.
Strange, but works.
Per Apple's documentation (link); an empty iPad specific storyboard may be the answer. I've also seen issues where the initial view controller is not set within a storyboard causes a black screen. A variant of this issue might be an incorrect setting in the app plist.
Technical Q&A QA1780
Why does my app launch to a black screen on iPad?
Q: Why does my app launch to a black screen on iPad?
A: Apps that have been designed only for iPhone may launch to a blank screen when run on an iPad. This is caused by the presence of an empty iPad specific storyboard in the app bundle as well as an iPad specific UIMainStoryboardFile key in the app's Information Property List (Info.plist) file. Both are automatically created by the various Xcode template projects if the Universal option is selected.
...
In Xcode
Look for a file named MainStoryboard_iPad.storyboard in the file navigator. If this file is present, remove it from your project.
In your app's Information Property List
Look for a key named Main storyboard file base name (iPad) or UIMainStoryboardFile~ipad. If this key is present, remove it. You should also remove any other key suffixed with (iPad) or ~ipad.
Finally, test your app on an iPad or in the iPad simulator and verify that it behaves as expected.
I requested Apple support and it turned out that it's a bug. They asked me to report it and I did. Here is the report id : 15340531.
Now it's up to them.
Using LaunchScreen.storyboard
I was having a similar problem until I found the following settings in the General Project Settings.
Set your Main Interface to your main storyboard file. Mine is called Main.storyboard.
Set your Launch Screen File to your launch screen storyboard file. Mine is called LaunchScreen.storyboard. (This is what I had originally ommited.)
After that the launch screen loaded first and then the main story board loaded shortly later.
Try set the image again make sure that resolution of the splash screen is according to the iOS 7 guidelines
I know this sounds stupid. I've had bugs like that when I saved a file in psd-format with a jpg extension. Just 1 wrong click while saving your launch image.
After having tried several solutions found here, I suspected that the iPhone was trying to launch in Landscape orientation, and thus not finding any corresponding launch image. Indeed, the simulator was starting in Landscape for a reason I was not understanding.
Finally, after reading Apple documentation, I found that it's probably the order of keys in "Supported interface orientations" of the info.plist file that was not adequate. The Portrait was the last item. When it's the first item, the app launch in Portrait mode and find the image.
Remove previously installed app from the device or simulator, Then relaunch the app after clean.
I had the problem where the launch images would no appear in iPhone (3.5 or 4 inch) in iOS 7, but the iPad had no problems with iOS 7.
Long story short is I disabled the asset catalog for the launch images only. So I'm adding the launch images the old fashioned way. That seems to have solved the problem.
I will have to do more testing tomorrow, but it seems the problem is solved (at least in my case).
in Xcode 5 , make sure thay you add all needed images mentioned in your app target.
I am assuming that when you are using Asset Catalog, you have ensured that you have the Images.xcassets target membership added correctly. I am mentioning this since if you have multiple targets, looks like you have to add them manually (and you have not provided any screenshots so one can be sure).
Now that you have not really provided a screenshot of the "LaunchImage" overview of Images.xcassets folder in your project, I can only guess the probable reason. Looking at the fact that the launch images work fine for iPhone (6.1 & 7.0.2 and iPad (6.1) and do not work only for iPad (7.0 and upwards), I think you could perhaps look at as to whether the dimension of the images for iPad Portrait and iPad Landscape are proper for iOS7. Specifically, you should see your launch images and not empty rectangles as seen in the attached pic-
This can happen due to the fact that you still have the iPad launch images for iOS7 created excluding the status bar area. Prior to iOS7, the iPad launch images were created to exclude the status bar area, but it's a must on iOS7 that all the launch images must include the status bar area. Please go through the section "Things Every App Must Do" in Apple iOS7 UI transition Guide (https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/TransitionGuide.pdf).
The following screenshot should explain what I am talking about-
e.g. you can see that iPad Landscape Retina image dimension for iOS6.1 and previous is 2048x1496 (excluding 40 px for status bar) but the dimension for the same image for iOS7.0 and upwards is expected to be 2048x1536 (including the 40px for status bar). So, if you have not changed your images accordingly, you will see black screen for images on iPad 7.0 and upwards. On iPhones, you will not face this issue since iPhone launch images always cover the status bar, be it iOS6.0 and iOS7.0- so the new UI requirement is already met for iPhone launch images.
I found this answer which worked for our app (iPhone only, but used on iPad): https://stackoverflow.com/a/19448782/1258419
To summarize from that answer:
How to do it. Go to the asset catalog. And on the top right corner click on the 'Attribute Inspector' icon. Here you can set the Target OS for the Launch Images. Uncheck the iOS 7 check boxes for iPhone. Now you should be able to see the launch images for these devices.
I encountered a similar problem in landscape, my iOS 7 launch image wasn’t displayed while the iOS 6 did. Mine was the iPhone Retina 3.5” launch image.
Since I have another app in portrait that didn’t share this issue, I did 2 things:
In info.plist, under “Supported interface orientations”, I added the
2 portrait modes as well, and put them before the landscape, like
this:
Item 0: Portrait (top home button)
Item 1: Portrait (bottom home button)
Item 2: Landscape (right home button)
Item 3: Landscape (left home button)
Implemented this method in the View Controller:
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
This works with or without the Asset Catalog.
This is an update for iOS 8.
I got the same problem when I tried to add a LaunchImage to my iOS 8 app.
Apple enables developers to use a xib, whose default name is LaunchScreen.xib, to render the launch view as of iOS 8. I believe developers can use either LaunchImage or LaunchScreen.xib. Unfortunately, I couldn't find any document describing how to deal with LaunchImage after LaunchScreen.xib was introduced. I always got a black screen when I tried to use LaunchImage as the launch view.
My solution is:
Don't think about LaunchImage. Use LaunchScreen.xib. (You have to keep an empty LaunchImage in your Asset Catalog though. I believe it's a bug.)
Drag an UIImageView to the xib and make the UIImageView full screen. Remember to take the size classes and constraints into account.
Set an image whose resolution is enough for iPhone 6 plus to the UIImageView.
Check your all images and see if it is properly placed in the Asset and properly named and sized.
Also check which orientations your are allowing and accordingly add images to the asset.
I had the same problem.
I had to make a workaround: used the Default image for all iOS versions and DELETED the UILaunchImageFile key from info.plist.
I cannot use different launch images for iOS 7 and previous versions, so, I had to use the same "artistic" image for all, instead an image that mimic the first view of the app (which Apple recommends and I prefer), but at least I do not get the black screen anymore.
It looks like the UILaunchImageFile key that allows to use differents launch images for iOS 7 and previous versions is not working properly for Retina iPad in iOS 7.
WARNING: I am still testing the app, so I don't know if could be some side effects.
I also faced the similar issue but its solution was simple (in my case).
All I did was following -
1.Add a new file (if you have not added it) Launchscreen.storyboard
2.Get a UIViewController, mark it as Is Initial View Controller then add a UIImageView in it and set a picture which you want to display during launch of your app. Make sure you give this UIImageView required constraint.
3.Go to Project->General->App Icons and Launch images and select Launchscreen.storyboard as Launch Screen File (There will be a dropdown for it).
Because of iOS 13 and later, app launch different than earlier versions.
Get the solution from below URL.
https://stackoverflow.com/a/59913274/883505
I simply forgot to call super.loadView() in my view controller...
override func loadView() {
super.loadView()
}

Will releasing an iPhone app makes it available for iPad by default?

In my XCode's Targets summary screen, the "Devices" drop down is set to "iPhone" (other possible values are iPad and Universal) because I haven't fine tuned the app's UI for iPad. However, will people be able to download and run my app from the iPad in non-fullscreen? (e.g., with black border surrounding most of the screen)
I want people to be able to search for it in app store, install it, and run it even though it is not full screen.
Even though your device settings for app is iPhone, you can download it from iPad, but it can be viewed only as in iphone size or in 2x option is there on right bottom side of the app (refer image) to double the app size in ipad; but doubled view will look stretched.
An iphone app downloaded to ipad will look like as shown (In 1x mode).
If it's on the app store as an iPhone app then you can still run it on the iPad but they'll run in their original size unless you change the size to fit using the 1x or 2x icon. The graphics won't be as sharp and if your app uses any iPhone only features - make calls, then it's not going to work as expected.
If you want to get rid of the little iPhone app inside the iPad then you'll need to change the target to Universal in order to run as a native iPad app
What type build you use? XIB or Storyboard?
In any case go to the drop down menu and set Universal App, xcode create automatically the Xib or storyboard target for iPad, and the app run in full screen on iPad.
Ok now you have to setting up a new interface specific fo iPad:
if you use a xib files, you have to only resize the interface target for iPad.
if you use a Storyboard, in order you have to
Right click on your project and click on NewFile
add New Storyboard target fon iPad
Now you have a new storyboard for ipad, but is empty and not linked, so go to you project setting and set the new story under the iPad settings, click on iPhone Storyboard and pres CMD + A select all inside your storyboard for iPhone go to your storyboard for iPad and again CMD + A and press CANC Yes delete all inside a iPad Storyboard and press CMD + V now you have copy all your project correctly target for ipad but now you need to relink and resize all stuff.
Hope this help you and other people, do not forget vote up ;)

Updated splash / launch not working

I will add localization to the splash image from my app.
I created the images and put them in the correct folder, but when I launch the application "updating" my app in the simulator it still shows the old image.
I tried to cleand and build with no results.
If I delete my app and istall it again, it works fine!
I did a test in 2 iphones from my company and in both I got the same behavior, I have to delete and install the app to update the images.
My question is: This will happen when I update the app on the apple store? The users will continue to see the old splash image?
Your users shouldn't see the old image when updating from the app store. From what I have seen and heard from others, the install process in the simulator from Xcode is more of a copy/paste action than and update/install action. As long as a clean run works fine, it should be safe to assume that your app store version will work fine as well.
One Suggestion.. if you just want to show SPLASH PNG image then just use default.png name of the splash image in you Resource folder... Don't code anything for splash png image...
iPhone will automatically detect this default.png as a splash image..