Как сделать приложение универсальным для iPhone / iPad

Универсальность приложения – это большой плюс, так как на iPad в таком случае приложение будет работать так же красиво, как на iPhone без масштабирования и как иногда говорят “пикселизации”. Кроме этого, поддерживать универсальное приложение удобнее, так как оно одно, в противном случае нужно поддерживать два разных приложения для двух платформ, что более трудоемко. А еще в App Store будет одна страница. Следовательно легче продвигать, комментарии все в одном месте и т.д. Есть и минусы универсальности. Сложные приложения проще сделать, наверное, в двух вариантах.

Для того, чтобы сделать приложение универсальным нужно учесть несколько аспектов или сделать несколько вещей.

  1. Заходим в Build Settings проекта и делаем поиск параметра Targeted Device Family. Выбираем опцию iPhone/iPad. См. рисунок. При щелчке он увеличивается.
  2. Создаем все необходимые заставки и иконки в нужных размерах. Для 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.
  3. Если какие-то 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];
    }
  4. Во всех других участках, где нужно учитывать тип устройства пишем аналогичный код:
  5. Ссылки:
    Converting iPhone apps to universal

    A few more notes

Leave a Reply

Your email address will not be published. Required fields are marked *