Reputation: 3716
I'm quite a newbie in Cocoa, Objective-C and iOS development.
I'd like to implement a View that is just a splash screen and only last for a short time before routing to the main view. Do you have any idea on how I should implement that ? Any tutorials or code samples ? I have some with multiple views, but none with a timer to redirect to another one after a few seconds like I want to do.
Upvotes: 41
Views: 98080
Reputation: 190
Best solution for implementing splash screen on Storyboard Xcode Version 12.5.1 (12E507)
in 4 steps your splash screen is done
Upvotes: 0
Reputation: 2269
Having just had to fix this same problem myself, I thought I'd post an update.
I found that I had to set the Supported Interface Orientations in the Info.plist before it would work correctly.
I also found this article on iOSDeveloperTips.com to be pretty useful: Managing Multiple Launch Images
Upvotes: 3
Reputation: 723
To add splash screen first add that image in your project and then add the following code to your AppDelegate
method in the didFinishLaunching
method
[NSThread SleepForTimeInterval:(Time interval)];
Upvotes: 1
Reputation: 4752
See App Launch (Default) Images under the iOS Application Programming Guide.
It should also be noted Apple advised NOT abusing the launch image as a splash screen. Apple HIG
Upvotes: 40
Reputation: 1159
You can easily implement your view on top of the main view but in your appDelegate
. For example, if you want a splash image that fades out to the main view: (or a default image that seems to fade out: just put the same image on the splash screen and the default screen).
This gives you also the right orientation as long as it is the main view's.
Just add it in your application:(UIApplication *)application didFinishLaunchingWithOptions:
method:
UIImageView*imageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"your_default_image_or_another.png"]];
[[firstViewController view] addSubview:imageView];
[[firstViewController view] bringSubviewToFront:imageView];
// as usual
[self.window makeKeyAndVisible];
//now fade out splash image
[UIView transitionWithView:self.window duration:1.0f options:UIViewAnimationOptionTransitionNone animations:^(void){imageView.alpha=0.0f;} completion:^(BOOL finished){[imageView removeFromSuperview];}];
Upvotes: 32
Reputation:
To add splash screen just simply replace all the default images ([email protected],....) with your splash image with the same default name (for all hardware display type) . To increase the duration of your splash screen , in appDelegate method
didFinishLaunchingWithOptions
just sleep the main thread for the duration you want as:
[NSThread SleepForTimeInterval:(Your time interval)];
you can also use sleep(time interval) in
didFinishLaunchingWithOptions
sleep(3);
Upvotes: 3
Reputation: 2225
You only have to add three images for iPhone, iPhone 5 and iPad named Default.png, [email protected] and [email protected]. Now the clarity of the images depends on the size you are taking. You should take the standard sizes.
Upvotes: 2
Reputation: 3007
I know I'm giving answer to almost one year old question, but it may help some one else-
I've just discovered that you can do this in XCode4! Which makes this a rather simple process now.
Upvotes: 11
Reputation: 6294
In XCode 4, you can click on the Project Name (the parent in the hierarchy on the left).
Then in the Summary tab, under iPhone and iPad you will be able to select the Launch images for each form the file system.
Upvotes: 4
Reputation: 1105
The other answers are good but I'd like to add that for iPhone apps your Default.png should be 320x480 and for retina displays you should add [email protected] 640x960.
Upvotes: 6
Reputation: 10870
As @Espresso posted link, I just wants to explain it to you.
If you just place an image named Default.png inside your project then it will be used for splash screen. However you can use different image name by explicitly specifying it in plist file.
Upvotes: 12