I have an iPhone app which, when it launches, loads in data from a remote database.
How would I go about displaying a loader on the screen from the point the app sends a request to the database to the point where the app has received the data?
Here's a pretty good code snippet from iPhone Cookbook (Erica Sadun). What I like about it, is it adds a UIProgressView to an ActionSheet that animates from the button of the iPhone screen.
http://ipsw.info/trac/browser/iphone-3.0-cookbook/C10-Alerts/07-Progress%20View/main.m
Use UIProgressView or UIActivityIndicatorView. Do you need help with a more specific aspect of this?
Related
I am trying to create a Splash Screen with html5 code embebed in iOs. I have been looking for some example but I didn't find anything. Does anyone know something about it?
Thank you.
Finally, I made one intermediate UIView that the app loads first in the window. Then the app loads the rest of the data and change the root view of the window.
It works! :)
I'm going to submit a Lifestyle app to the App Store. I'm confused whether to add a Splash Screen to the App or not ?
Please advise me whether it's a good or bad idea as far as usability and App Store's submission guidelines are concerned.
Its bad - you shouldn't do that!
Please read the Start Instantly Section of the Apple HI Guidelines
Avoid displaying an About window or a
splash screen. In general, try to
avoid providing any type of startup
experience that prevents people from
using your application immediately.
http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/UEBestPractices/UEBestPractices.html
You should definitely at least add a Default.png to your app if I understand your question correctly.
Launching an app and looking at a black screen for a split second is not the best user experience. Some nice-looking image with your company name or app logo will do. Or you could follow Apple's guidelines and present an image of the starting user interface so that your app will seem to load instantly.
Here's a relevant doc.
The developers guides mostly suggest a splash that looks like the starting screen of your app, to give people the impression the app has started. This has the bonus of allowing the user to start figuring out what they want to do while the program finishes loading.
From a users standpoint, I dislike most splash screens, I just want to get to the program, not look once again at what constitutes an advertisement for the program.
if your app loads blazingly fast,then you can provide this method in
- (void)applicationDidFinishLaunching:(UIApplication *)application
[NSThread sleepForTimeInterval:3];
Before your view controller is loaded.
It will halt the main thread for 3 seconds,which will give time to your splash screen.Thats the way i do and there is no problem with this method,as you are working on the main thread.
Yes, you can add a splash screen to your app.
Depending on what you do with your splash screen as far as extravagant animations go, I would go subtle, with minimal animations.
You can add a Default.png (see iOS documentation!) to your application bundle.
This image is being shown full screen while your application is loading.
Other than that, I wouldn't add a splash screen to your app.
What is the best way to create tutorial or help screens that can be viewed in an iPhone App on launch?
I'm debating between using two paradigms:
Edit a screenshot of the app with an image editing program to add static help text. Interaction is tapping or scrolling through the tips. This involves creating a custom UIViewController to advance to the next help screen.
Create a custom iPhone UIControl on top of the App user interface that can be tapped to advance to the next tutorial tip. The application will transition between the modes and will be active, rather than static. It involves adding hooks into the App's custom ViewController's to handle "TutorialUIControl" objects.
Here's some screenshots of the application that I need to make help screen UI for, it's an application that creates artwork. More App Information
Screenshot 1: View mode that allows viewers to scroll through an image list, like the UIImagePicker, but for custom image collections.
Screenshot 2: Action mode - allows viewers to select images to save to the "My Saved" album from the active art generation album "My Evolution" or evolve images using sexual/asexual image reproduction.
The "right" answer really depends on the application you are designing. I would highly suggest getting as many apps as you can and looking at how they do help. See what works and what doesn't and think about how that is related to your own design.
In my app (a game) I chose to build a set of static images that could be scrolled through to provide detailed help (based on Apple's sample code). But, I also built an interactive tutorial that plays the first time you run the game. I also pop up a welcome overlay the first time the app is run and suggest what button to press to start a game.
It also helps if you test your tutorial with a lot of different people. After several designs with things too complex, I boiled down my instructions to something extremely simple: "Press the green buttons", and then built up from there.
You can easily store a preference to say whether the app has been launched before, and if that entry is blank you run the tutorial again.
You can create an HTML tutorial that you view through a UIWebView. In on of my iPad apps, I just made a large image that I presented modally with images and text explaining how to use the app.
For iPhone, the best way to include a "How-To" tutorial for your app would have to be a web document, seeing as how you can add images and formatted text.
Alternatively, You can add more views to your controllers with transparent backgrounds and animated buttons and text, for a more interactive feel.
To answer my own questions many months later.
I revamped and used WEPopover to show my help popups, as seen in the iPhone/iPad App, Wallpaper Evolution Lite. The help disappears only if tapped or the button it was attached to was pressed. Using this flow I could highlight a series of buttons to the user.
I added help images within the application to highlight interaction behaviors with the content. The tap, zoom, and drag images are fully interactive.
As #WrightsCS mentioned HTML is another avenue. I use the UIWebView to provide a more in depth help/tips screen with contact information.
In my upcoming app, I'm making use of a paging UIScrollView with help content highlighting app features. The help screen is loaded on the first start of the app, and is accessible through a help menu option.
Here's my fork of the WEPopover github project: https://github.com/PaulSolt/WEPopover
ok. I know how to display the splash screen on iPhone. Seems quite simple enough (i.e. setting the Default.png and calling "sleep" command).
But, is the application actually doing anything during this time? My app needs to go and fetch some data from Web before showing the app's first screen, but when I do the splash screen, it doesn't seem like it's doing this while showing the splash image.
Can I actaully make the app do something while showing the splash screen?
The best way would be to structure you application differently slightly differently.
Make your application display the Default.png when it starts it (ie. put a UIImageView onto screen), then start fetching your data.
Then either when you have fetched the data (or if you really must, once an NSTimer has expired, but it's a better user experience if you avoid a fixed time interval) change the view to be your real one.
Where you have got the idea that you need to call "sleep" while showing Default.png and there is nothing going on while this image is shown? Default.png is shown when OS is loading your app. You can not do anything during this time. In fact you have not got any control yet. It is handled by the OS. The idea behind this is to give user a feeling that app has loaded quickly, but actually your app is not completely loaded while Default.png is showing instead of a black screen by the OS.
You can manually add a view looking like your splashscreen after starting your app and handle the work in background. I would also add a hint to the user which indicates "loading data", because an app should start within 3 seconds.
If you read the Human Interface Guidlines, they're pretty clear that Default.png isn't intended to be a branding splash screen. It's meant to bring up a static "shell" of the initial page of UI so that the user experiences quick loading. So it's not at all designed or intended for what a lot of apps are using it for (including some of mine).
If you have your first screen that comes up be that image again, maybe with an activity spinner or status text on it, you can do whatever you need to do in the background of it, and then replace it with the first "real" screen of your app when you're done.
Generally all of the awakeFromNib calls in view controllers are done while the app is loading (ie has the splash screen up). When I put breakpoints in my apps at awakeFromNib calls, the breakpoints are hit when the splashscreen is up and the app is loading. So everything you do in
those calls will be processed while the loading screen is up.
I would like to update the application icon and the splash (loading) screen of my app dynamically if possible, by storing the data in SQLite fetched from a webservice
I pretty sure the answer is going to be no but thought I'd get confirmation
Thanks
You can change the Default.png file by putting a symlink in your app bundle:
http://collison.ie/blog/2008/11/dynamic-defaultpng-files-on-the-iphone
The same technique might work for the Icon.png, but I doubt it, and if you could get it to work I imagine you'd have to HUP the SpringBoard (which you can't do on a non-jailbroken device).
It looks like Apple has removed the ability to set a badge for your app other than through push notifications (which in that case can only be a number according to the docs).
EDIT: This hole was closed in 3.0:
Dynamic (Default.png) splashscreen in 3.0 [iPhone SDK]