Универсальность приложения – это большой плюс, так как на iPad в таком случае приложение будет работать так же красиво, как на iPhone без масштабирования и как иногда говорят “пикселизации”. Кроме этого, поддерживать универсальное приложение удобнее, так как оно одно, в противном случае нужно поддерживать два разных приложения для двух платформ, что более трудоемко. А еще в App Store будет одна страница. Следовательно легче продвигать, комментарии все в одном месте и т.д. Есть и минусы универсальности. Сложные приложения проще сделать, наверное, в двух вариантах.
Для того, чтобы сделать приложение универсальным нужно учесть несколько аспектов или сделать несколько вещей.
- Заходим в Build Settings проекта и делаем поиск параметра Targeted Device Family. Выбираем опцию iPhone/iPad. См. рисунок. При щелчке он увеличивается.
- Создаем все необходимые заставки и иконки в нужных размерах. Для iPad размер заставки 768×1004 px, размер иконки 72х72 px. Для iPhone 360×460, иконка 57×57 для iPhone 3GS и ранее, 720х920, 114х114 соответственно для Retina display в iPhone 4 и выше. Если Вы не отображаете Status bar, то нужно прибавить еще 20 к высоте. Присваиваем все заставки и иконки во вкладке Summary для Вашего Target.
- Если какие-то XIB файлы View нужно переделать под iPad, то создаем эти XIB файлы. Для этого нажимаем правой кнопкой по папке Classes в проекте, New File -> User Interface -> View. Но просто создать XIB недостаточно. Нужно еще его File Owner присвоить значение нужного класса. См. Рисунок.
Теперь у нас есть 2 XIB файла для одного View Controller: MainAboutViewController.xib и MainAboutViewControllerIPad.xib к примеру.
В коде, там где вызывается этот контроллер, нужно сделать разветвление наподобие следующего:
- (IBAction)showAboutScreen:(id)sender { NSString *nibName; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) nibName = @"MainAboutViewControllerIPad"; else nibName = @"MainAboutViewController"; MainAboutViewController *mainAboutViewController = [[MainAboutViewController alloc] initWithNibName:nibName bundle:nil]; mainAboutViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; mainAboutViewController.title = @"О приложении"; [self presentModalViewController:mainAboutViewController animated:YES]; }
- Во всех других участках, где нужно учитывать тип устройства пишем аналогичный код:
12if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)else ...