This question already has an answer here:
iOS: Update launch screen dynamically
(1 answer)
Closed 2 years ago.
I'm developing an app using SwiftUI and I have had a default launch screen on my app, using the default LaunchScreen.storyboard.
However, I want to display a different launchScreen based on information stored on UserDefaults.
Is this possible? I assume some workaround is needed, but I have not figured it out yet.
My understanding is that LaunchScreen has an extremely limited capability, and rather strict guidelines, including that it shouldn't contain dynamic content. Notice this quote from this page:
A launch screen appears instantly when your app starts up and is
quickly replaced with the app's first screen...It’s solely intended to
enhance the perception of your app as quick to launch and immediately
ready for use.
You probably want to have a second "landing" screen where you load dynamic content This can look almost identical to the Launch Screen, which will probably only appear for a second at most, giving the illusion of a dynamic launch screen.
Related
I have been trying to implement the Google Places API and stumbled upon the Place Picker Demo provided by Google. I have been trying to edit the code and tailor it to my project but to no avail. For example I tried changing the launchscreen.storyboard file to fit my needs, but in the simulator it shows up for about a second before it goes back the original app screen. So is it even possible to edit the demo code that Google has created or transfer it to my project somehow? I am also quite new to Swift and Xcode so any help would be appreciated.
This is the link to where I obtained the code from:
https://developers.google.com/places/ios-api/code-samples
The LaunchScreen.storyboard interface is only shown for a split second while the app is loading and should not contain any actual content besides a logo or a barebones preview interface (Apple discourages logos) so that the app appears to have a fast start time.
On the Human Interface Guidelines:
A launch screen appears instantly when your app starts up. The launch
screen is quickly replaced with the first screen of your app, giving
the impression that your app is fast and responsive. The launch screen
isn’t an opportunity for artistic expression. It’s solely intended to
enhance the perception of your app as quick to launch and immediately
ready for use.
If you want to have a different starting screen, add a View Controller to the Main.storyboard and set it as the Initial View Controller (a checkbox in the right sidebar).
So I am new to iOS development and I have a question about the launch screen.
My app will have an image (that loads when the app opens from the internet) this can change anytime the image is updated on the website, so what is the done thing when designing a launch screen as the image could be different to what is on the launch screen?
Thanks
In Apple's Human Interface Guidelines, they suggest that the launch screen should match the first screen of your app. In the example they give, the only parts of the launch screen are the non-dynamic parts (the UI around the web content).
Design a launch screen that’s nearly identical to the first screen of your app. If you include elements that look different when the app finishes launching, people can experience an unpleasant flash between the launch screen and the first screen of the app.
The launch screen is presented before your app loads, and it should be used for static content only.
If there are any UI elements around the image that is displayed, show those in your launch screen. If not, choose a neutral background color that works well with the theme of your app.
Omit the image. A launch image should be a bare outline of what the screen will certainly contain. It might be no more than the correctly-colored background. It is just to cover the gap between nothing and something.
Read the Guidelines: https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/ Look at the picture on the left. That's a launch screen — basically empty.
LaunchScreen image is always the same..
You can set it in LaunchScreen.storyboard
The launch screen is used to display something whilst your app is initialising, making network requests or whatever.
You shouldn't be looking to load dynamic content here as if a user is on a very slow connection then they wont see anything until your image has loaded. This is why it doesn't have a view controller associated with it. it should be static.
You should only really be loading your logo or something in here, you could just use the company name. it will only show for a short amount of time. then when assets change, submit the changes to store
With the (relatively) new feature of iOS to have launch screens generated from a XIB file, a logical question arises: is it possible to reference any sort of dynamic resource from these XIBs? An example would be an app having customisable home screen, which makes it neccessary for the XIB file to adjust once the user changes smth (i.e. background color)?
Maybe it's possible to reference an image from Documents/ folder or read some dynamic plist file's values?
According to iOS Human interface guideline Launch file/image should be static.
Design a launch image that is identical to the first screen of the app, except for:
Text. The launch image is static, so any text you display in it won’t be localized.
UI elements that might change. If you include elements that might look different when the app
finishes launching, users can experience an unpleasant flash between
the launch image and the first app screen.
For more information see: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/LaunchImages.html
This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
Localization of Default.png is not working
My splash screen has English text in it, so I would like to be able to have a different splash image when users have a different language set.
Is this possible?
Yes, it's possible. Pretty much the same way you localize all your resources.
You just need to provide a Default.png image and then enable all the languages you're interested in. The result is that you'll get a copy of the image for each language into the respective folders. Then edit (or overwrite) each image as you need. I have tested it right now and it works fine (on iOS 5 but I believe is the same for older versions). Here is a screenshot for easy reference:
EDIT:
Regarding any doubts about whether or not this is a good practice, this is straight from Apple's documentation:
In addition to including the launch images at the top level of your
bundle, you can also include localized versions of your launch images
in your app’s language-specific project subdirectories. For more
information on localizing resources in your app, see Table 6-2.
No.
Edit: Indeed, I'm dumbfounded. Like nevan-king I'm going to leave my answer nevertheless, since I still think that's the way it is intended to be done by the iOS guidelines (and my personal opinion about localizing whole images in order to localize its text...).
A splash screen is not intended to provide information. Splash screens are only shown for like a second or so, so it would be unfeasible to show text anyway.
Common practice for what you want to do is to use your image without text as splashscreen, and after that show a custom view with your image and localized text for a few seconds.
That way it will seem like you had a localized splash screen (and the text appears shortly after the image, which is fine).
However, keep in mind that the idea of iOS apps is fast responsiveness, so only show a "startup screen" if you must (for marketing reasons or whatever).
Read this for further information: http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html#//apple_ref/doc/uid/TP40006556-CH14-SW5
There's no way to do this. Instead, make a Default.png with no text.
Edit: I stand corrected. Just tried Alladinian's method and it worked. I'll leave my answer, as it's a useful technique to know.
You can do this pretty easily in Photoshop by selecting a square, then copying it and pasting it over the text. Use Marquee to select a square of your graphic (say an empty part of a navigation bar). Then hit "v" for the move tool. Use cmd-opt and move the square a little to the left, then cmd-opt-shift so that it doesn't move up or down. Move the square over the text and let go of the mouse button. Repeat as necessary.
If you want to see how Apple handles multi-language splash screens, open Maps or Mail. They have a Default screen with no text, then the text appears (in whatever language) when the app has loaded.
How important is it to add Launch Images to an iOS application? I assume that these are like a cached file to show on the screen while the application is getting setup, when there might otherwise be nothing to show until it is fully running. Is this right?
If so, what should a launch image be if your app might start in different states, or does this not effect return to foreground when multitasking? If it is only for the very first initial launch of the app, then the launch image should just be the same as whatever graphic normally appears when you first start the app, right?
Apple must not care too much about whether your app actually includes these, since mine never have.
Note: as Zev mentions below, the Apple HIG recommendation has changed since I originally answered this question. Apple now recommends that you take all of the static elements of your first screen and make that into your default or launch page. All dynamic elements are to be removed, to give the impression that your app is going through an initialization process -- which in some cases may mean that your default screen is simply a background from your app. Thanks to Zev Eisenberg for pointing that out, "splash" pages are not recommended.
The launch image will show while your app is initializing, it's a good idea to have one. If you don't have one the user is likely to stare at a blank screen while waiting for your app to load. I believe the recommendation is to use an image that looks like the first page of your app. Here is the reference:
http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html#//apple_ref/doc/uid/TP40006556-CH14-SW5
how about if app is starting immediately and no time passed ?
what if you see (or cannot see) for a 0.1 sec launch image ?
would it be still useful to have two images in main bundle that will never be seen or used ?