Как перенести приложение iPhone на iPad (раскадровка) - PullRequest
9 голосов
/ 27 января 2012

Я только что закончил приложение для iPhone и хочу сделать его универсальным. Я уже прочитал несколько сообщений, но они немного старые (2010 или около того).

Что я получил:

  • Простое приложение для iPhone, недавно созданное (iOS 5 - Раскадровка), с тремя экранами.
  • Мое приложение представляет собой таблицу с тремя картами, которые вы можете перевернуть, касаясь их. Пользователь может ввести (на втором экране) текст, который будет отображаться на карточках.
  • Когда я создал проект, я выбрал «Универсальный», поэтому у меня есть два раскадровки. После этого я больше ничего не делал с iPad (кроме строки в моей опции электронной почты «поддержка контактов», где я использовал UIModalPresentationPageSheet).

Чего бы я хотел достичь:

  • То же приложение на iPad: мое приложение настолько простое, что я не использую разделенные виды или детали. Мне просто нужны те же объекты и макет, но с большей и лучшей графикой (стол, карты и т. Д.).

Мне это нравится, потому что это сделало бы отличную миграцию начального уровня.

Понятия не имею, с чего начать. Когда я запускаю симулятор iPad, появляется белый экран и все.

Ответы [ 3 ]

12 голосов
/ 01 февраля 2012

Ну, это сделано.

Как и почти все, это довольно легко, если вы знаете, что делать.

Я бы сказал, что для тех случаев, как мой, где пользовательский интерфейс не изменяется больше, чем в размерах или (x, y) координатах, процесс можно суммировать следующим образом:

  1. Реплицируйте каждый элемент пользовательского интерфейса на раскадровке iPad (скопируйте и вставьте) и настройте положение и размер по своему усмотрению
  2. Повторно подключите все снова. Каждая кнопка, segue (вам также придется добавить имя segue) и т. Д.
  3. Проверяйте в своем коде каждое место, где затрагивается ваш пользовательский интерфейс (например, координаты x, y), определяйте, работает ли приложение на iPhone или iPad, и делите код соответствующим образом
  4. Если у вас есть какая-либо локализация в приложении, вам придется обновить новые элементы пользовательского интерфейса на раскадровке iPad
  5. Выберите цель для тестирования на симуляторе и опробуйте ее

Чтобы определить, на каком устройстве запущено приложение, вы можете использовать следующее:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    //I'm running on the iPad
} else {
    //I'm running on the iPhone
}

И это все. Опять же, в простом случае, подобном моему, повторное использование кода является абсолютным (100%), новый код, который вам нужно добавить, минимален (в основном, если требуется оператор IF), а дублирование элементов пользовательского интерфейса так же просто, как копирование и вставка .

Я надеюсь, что это будет полезно для кого-то другого, и если у вас есть рекомендации по улучшению этого, они более чем приветствуются.

4 голосов
/ 31 октября 2013

Откройте файл раскадровки в Finder, скопируйте ваш iPhone-раскадровку и переименуйте его в Main-iPad.storyboard

Внутри xCode щелкните правой кнопкой мыши раскадровку -> «открыть как» -> «Исходный код»

Найдите targetRuntime = "iOS.CocoaTouch" и сделайте его targetRuntime = "iOS.CocoaTouch.iPad"

Теперь сохраните все и снова откройте Xcode -> iPad-раскадровка содержит то же, что и iPhone-файл, но все может быть нарушено, вы должны организовать его самостоятельно.

Наконец, чтобы получить формат iPad, также измените код в MainStoryboard_iPad.storyboard с: на

Затем перейдите кФайл «StroryBoardEx-Info.plist», найдите «Основное имя файла основного пера (iPad)» и сделайте его «Main-iPad.storyboard»

3 голосов
/ 25 февраля 2012

Если вы просто хотите повторно использовать раскадровку iphone, просто перейдите в настройки своего проекта. На вкладке TARGETS Info есть строки «Основное имя файла основной раскадровки» и «Основное имя файла основной раскадровки (iPad)». Просто отредактируйте iPad, чтобы он имел то же значение, что и другой. В моем случае мне пришлось отредактировать его как «Основное имя файла основной раскадровки (iPad)» со значением «MainStoryboard_iPhone».

...