iOS - Aplicativos universais
Um aplicativo universal é um aplicativo desenvolvido para iPhone e iPad em um único binário. Um aplicativo universal permite a reutilização de código e atualizações rápidas.
Aplicação universal - etapas envolvidas
Step 1 - Crie um simples View based application.
Step 2 - Alterar o nome do arquivo ViewController.xib arquivo para ViewController_iPhone.xib como mostrado abaixo no inspetor de arquivos no lado direito.

Step 3 - Selecione Arquivo → Novo → Arquivo ... e selecione a subseção "User Interface" e selecione View. Clique em Avançar.

Step 4 - Selecione a família de dispositivos como iPad e clique em Avançar.

Step 5 - Salve o arquivo como ViewController_iPad.xib e selecione Criar.
Step 6 - Adicione um rótulo no centro da tela em ambos ViewController_iPhone.xib e ViewController_iPad.xib.
Step 7 - em ViewController_iPad.xib, selecione os identity inspector e definir a classe personalizada como ViewController.

Step 8 - Atualize o aplicativo: DidFinishLaunching: método withOptions em AppDelegate.m da seguinte forma -
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen
mainScreen] bounds]];
// Override point for customization after application launch.
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
self.viewController = [[ViewController alloc]
initWithNibName:@"ViewController_iPhone" bundle:nil];
} else {
self.viewController = [[ViewController alloc] initWithNibName:
@"ViewController_iPad" bundle:nil];
}
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
Step 9 - Atualizar os dispositivos no resumo do projeto para Universal como mostrado abaixo -

Resultado
Quando executarmos o aplicativo, obteremos a seguinte saída -

Quando executamos o aplicativo no simulador de iPad, obteremos a seguinte saída -
