Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Query launch image at runtime

I'd like to have a nice start of my app by fading from the splash screen (UILaunchImageFile) into the main screen. Easy thing, I thought, just show an UIImageView with the splash screen as the very first view and then make a transition animation.

The problem is, since this is an iPad app with all four orientations supported, and splash screens for all these orientations, I would need to query which splash screen was used. I could query the current device rotation and select the image accordingly, but I wonder whether there's a better way.

So, can I query somehow which launch image was used during app start or do I need to ask for the device's current UI orientation and chose the file accordingly ?

like image 469
DarkDust Avatar asked Apr 26 '11 11:04

DarkDust


2 Answers

No, you can't do this automagically. Querying the device rotation and selecting an image based on that is perfectly fine.

You really only need Portrait or Landscape in this situation though, assuming you are rotating your view properly.

like image 63
Joshua Weinberg Avatar answered Nov 09 '22 05:11

Joshua Weinberg


As already stated by Joshua you cannot, as far as I am aware.

In case this might help someone else, if you are using asset catelogs the following code should provide the correct launch image for the current interface orientation.

NSString *suffix = nil;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    suffix = [[UIScreen mainScreen] bounds].size.height >= 568.0f ? @"-568h@2x" : @"@2x";
}
else {
    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
    suffix = UIInterfaceOrientationIsPortrait(orientation) ? @"-Portrait" : @"-Landscape";
    suffix = [UIScreen mainScreen].scale == 2.0 ? [suffix stringByAppendingString:@"@2x~ipad"] : [suffix stringByAppendingString:@"~ipad"];
}

NSString *launchImageName = [NSString stringWithFormat:@"LaunchImage-700%@.png",suffix];
like image 24
nacross Avatar answered Nov 09 '22 05:11

nacross