Невозможно выполнить что-либо, пока отображается настоящий заставочный экран.
Ваши действия начинаются в
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
метод, который выполняется при удалении заставки.
Если вы хотите выполнить некоторые операции с затратами времени, прежде чем показывать пользовательский интерфейс, единственное, что вам нужно - это показать вручную «фальшивый» экран-заставку в течение этого времени. Это может быть изображение или что-то еще, например индикатор активности или анимация. Если вы используете то же изображение, которое использовалось для заставки,
пользователь не увидит никакой разницы, похоже, что заставка для него останется на несколько секунд дольше, но ваши данные уже будут загружены.
В этом случае ваш делегат приложения может выглядеть так:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc]
initWithNibName:@"FakeSplashViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self performSelectorInBackground: @selector(someLongOperation) withObject: nil];
[self.window makeKeyAndVisible];
return YES;
}
- (void) someLongOperation{
//doing something
//...
[self performSelectorOnMainThread:@selector(atLastLoadGUI) withObject:nil waitUntilDone:NO];
}
- (void) atLastLoadGUI{
// start GUI
}