酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

iOSでスプラッシュ画像(起動画面)を長く表示する

iOSアプリを起動するとスプラッシュ画像(起動画面)が表示されます。アプリによっては一瞬しかスプラッシュが表示されませんが、まれにスプラッシュには会社やブランドのロゴが書いているので、もう少しだけ長くスプラッシュを表示させて欲しいという要望を頂くことがあります。

正確ではありませんが、スプラッシュはAppDelegateのapplication:didFinishLaunchingWithOptionsメソッドを抜けるまで表示されるので、てっとり早く対応したい場合は標準のsleep関数とかでスレッドを止めてしまいます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
	
    // ここで1秒間スレッドを止めてしまう
    sleep(1);
	
    return YES;
}

sleep関数は秒単位でのスリープしかできません。もっと微妙な調整したい場合は、NSThreadクラスのsleepForTimeIntervalメソッドを使用します。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
	
    // ここで0.5秒間スレッドを止めてしまう
    [NSThread sleepForTimeInterval:0.5];
	
    return YES;
}

正直オススメしません。