Вопрос

Как ты делаешь это?Я видел один видеоурок по нему, но экран был слишком мал.Кроме того, помимо изменения размера представления, есть ли какие-либо другие серьезные изменения, которые мне придется внести в свои приложения для iPhone, чтобы преобразовать их в iPad?

Это было полезно?

Решение

Предположим, у вас есть SDK с Xcode 3,

  1. Откройте ИБ.
  2. Откройте XIB.
  3. Файл -> Создать версию для iPad, используя маски автоматического изменения размера.

Другие советы

Мне удалось сузить круг вопросов до нескольких вещей, поэтому вот шаги, которые сработали для меня:

1) Сделайте копию файла iPhone xib и добавьте его в свой проект.

2) Щелкните правой кнопкой мыши файл (в xcode) и выберите «Открыть как» > «Исходный код».

3) Вторая строка должна выглядеть так:

<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">

Заменить:

<archive type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="7.10">

4) Найдите «IBCocoaTouchFramework» и замените все вхождения на «IBIPadFramework».

5) Сохраните файл и выберите «Открыть как» > «Строитель интерфейсов — iOS».

Файл все еще может выглядеть как обычный xib для iPhone, но для меня, как только я изменил строку состояния на «черный» в инспекторе атрибутов, остальная часть xib просто как бы «привязалась» к xib для iPad.

В Xcode 5 вам нужно просто:

Находить:

<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4510" systemVersion="12F37" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none">

Заменить на:

<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510" systemVersion="12F37" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none">

Обратите внимание, что мы просто добавляем .iPad к type и targetRuntime характеристики.

После открытия просто выберите новый размер для настройки.Пример:iPad в полноэкранном режиме.

ХКод4:

В xcode 4 мы не можем сделать это для одного xib, но мы можем создать соответствующие версии для iPad одновременно.

Прежде чем настраивать проект для iPad, если он настроен только для iPhone, щелкните правой кнопкой мыши цель и выберите дубликат.

Теперь выберите «дублировать и перейти на ipad». Создается новая цель и новый набор xib. Это должно сократить некоторую работу.

Надеюсь, поможет.

Xкод 4:

А Создание версии для iPad с использованием масок автоматического изменения размера функция была удалена из Xcode 4.На данный момент самый простой способ — использовать Xcode 3 для преобразования, поскольку формат файла nib (.xib) не изменился.

Xcode 3 и 4 теперь можно установить в одной системе, просто выбрав другую папку (см. инструкции по установке на образе диска).

В противном случае вам придется скопировать/вставить элементы пользовательского интерфейса из версии для iPhone и повторно связать их со своим кодом.

А как насчет того, чтобы позволить компьютеру выполнять работу компьютера?
Быстрее, меньше риска ошибок.

Вот рабочий процесс, основанный на отличный ответ от Джага, но автоматизировано с помощью sed.

Во-первых, давайте настроим кое-что.Нам нужно будет сделать это только один раз.
В каталоге, содержащем ваши XIB, создайте два файла со следующим содержимым:

Файл iPhoneToiPadXIBConversion.sed:

s/com.apple.InterfaceBuilder3.CocoaTouch.XIB/com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/g
s/IBCocoaTouchFramework/IBIPadFramework/g

и файл iPadToiPhoneXIBConversion.sed:

s/com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/com.apple.InterfaceBuilder3.CocoaTouch.XIB/g
s/IBIPadFramework/IBCocoaTouchFramework/g


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

Преобразование iPhone в iPad:

sed -f iPhoneToiPadXIBConversion.sed  MyViewController~iphone.xib  > MyViewController.xib

Преобразование iPad в iPhone:

sed -f iPadToiPhoneXIBConversion.sed  MyViewController.xib  > MyViewController~iphone.xib





Просто ради интереса давайте создадим две функции в zsh, чтобы сделать преобразование еще проще:

function convertiPadXIBToiPhone () {
    newXibName=`echo "$1" | /usr/bin/sed "s/.xib/~iphone.xib/"`
    `/usr/bin/sed -f iPadToiPhoneXIBConversion.sed "$1" > "$newXibName"`
    echo "Did convert $1 to $newXibName."
}

function convertiPhoneXIBToiPad () {
    newXibName=`echo "$1" | /usr/bin/sed "s/~iphone.xib/.xib/"`
    `/usr/bin/sed -f iPhoneToiPadXIBConversion.sed "$1" > "$newXibName"`
    echo "Did convert $1 to $newXibName."
}

После добавления этого в вашу конфигурацию zsh преобразование XIB будет простым:

convertiPadXIBToiPhone MyViewController.xib

или

convertiPhoneXIBToiPad MyViewController.xib

Откройте XIB в XCode 4, используя «Просмотр как исходный код».

До

Создайте резервную копию рассматриваемого пера.

Один

Замени эту гадость

    <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
    <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
        <integer value="1056" key="NS.object.0"/>
    </object>
    <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
        <integer value="3100" key="NS.object.0"/>
    </object>
    <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
    <int key="IBDocument.defaultPropertyAccessControl">3</int>
    <string key="IBCocoaTouchPluginVersion">301</string>

для этой другой вещицы

    <string key="IBDocument.TargetRuntimeIdentifier">IBIPadFramework</string>
    <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
        <integer value="3100" key="NS.object.0"/>
    </object>
    <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
    <int key="IBDocument.defaultPropertyAccessControl">3</int>
    <string key="IBCocoaTouchPluginVersion">301</string>

Два

Затем для каждого представления в пере, использующем встроенный IB, удалите его, а затем нажмите «Отменить».

Три

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

Вы можете открыть XIB как текстовый файл и изменить размер UIView:

Щелкните правой кнопкой мыши файл XIB в навигаторе и выберите:«Открыть как ...» Открыть как исходный файл.

Найдите ссылку на UIView и измените значения Frame:

<object class="IBUIView" id="191373211">

<string key="NSFrame">{{0, 20}, {768, 1024}}</string>

В XCode 4.3.2 самый простой способ создать версию xib для iPad — это дублировать этот файл xib и добавить ~ipad суффикс к имени файла.И добавьте в свой проект «myVC.xib» и «myVC~ipad.xib».Обратите внимание, что это «~ipad», а НЕ «~iPad».Ваше приложение будет автоматически использовать эту версию ~ipad при запуске на iPad.Это также работает с файлами ресурсов (например.изображений).

Лучшая ссылка, которую я смог найти на данный момент...https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/ImageSoundResources/ImageSoundResources.html

Обновление Xcode 5

targetRuntime="iOS.CocoaTouch"

к

targetRuntime="iOS.CocoaTouch.iPad"

Я задокументирую то, что я сделал в Xcode 4.5:

  1. fixpattern.sh

    cp REPLACEME_Iphone.h REPLACEME_Ipad.h
    sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.h > REPLACEME_Ipad_tmp.h
    mv REPLACEME_Ipad_tmp.h REPLACEME_Ipad.h
    cp REPLACEME_Iphone.m REPLACEME_Ipad.m
    sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.m > REPLACEME_Ipad_tmp.m
    mv REPLACEME_Ipad_tmp.m REPLACEME_Ipad.m
    cp REPLACEME_Iphone.xib REPLACEME_Ipad.xib
    sed -e 's/com.apple.InterfaceBuilder3.CocoaTouch.XIB   /com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    sed -e 's/IBCocoaTouchFramework/IBIPadFramework/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    sed -e 's/320, 416/768, 1004/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    sed -e 's/REPLACEME_Iphone/REPLACEME_Ipad/g' REPLACEME_Ipad.xib > REPLACEME_Ipad_tmp.xib
    mv REPLACEME_Ipad_tmp.xib REPLACEME_Ipad.xib
    
  2. Создайте список файлов, которые вы хотите конвертировать. fixfile, каждая строка будет именем файла без расширения.Если исходное имя файла AAA_Iphone.h, просто поставь AAA.Если исходный файл не соответствует этому шаблону, вам необходимо пересмотреть сценарий.

  3. Запустить в командной строке

    cat fixfile | while read line ; do sed -e "s/REPLACEME/${line}/g" fixpattern.sh ; done > fixall.sh
    
  4. Просмотрите и запустите fixall.sh

  5. Добавить вновь созданный файл в проект

Ответ Джага великолепен.Но есть одна загвоздка, если XIB открывается/создается в Xcode 5.

Для Xcode 5

1) Сделайте копию файла iPhone xib и добавьте его в свой проект.

2) Щелкните правой кнопкой мыши файл (в xcode) и выберите «Открыть как» > «Исходный код».

3) Вторая строка должна выглядеть так:

<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="4510"

измените это на

<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="4510"

4) 8-я строка должна выглядеть так:

<rect key="frame" x="0.0" y="0.0" width="320" height="480"/>

измените это на

<rect key="frame" x="0.0" y="64" width="768" height="960"/>

Вот и все, у вас есть iPad XIB.Но все же настоящая заслуга принадлежит Джагу.

В дополнение к ответу, данному Jag, также найдите «320 460» и замените его на 768 1024, и ваш XIB будет изменен до размеров iPad.

Для Xcode 4,

Вам не нужно создавать отдельную цель для каждого устройства.Вместо этого вы можете изменить «Устройства в сводке проекта» на «Универсальные», которые уже есть в iPhone.Ответ на этот вопрос можно найти в ссылке Обновление приложения iOS 5 до Universal в Xcode 4.2.Таким образом, он сделает переход за вас.

Похоже, что лучшее решение - всегда сначала разрабатывать как iphone, а затем, когда вы закончите, добавить цель ipad, позволяя xcode выполнить обновление.Я совершил ту же ошибку, выбрал для запуска универсальный, при котором создаются первые несколько файлов, но затем все остальные xib приходилось воссоздавать вручную в папке iPad.Большая БОЛЬ

Jag has given Great Answer.

В некоторых случаях.

Нет необходимости конвертировать ваш Iphone XIB в Ipad XIB.Вы также можете использовать Autorizing Massak и запустить iPad.Просто нужно настроить приложение для работы в универсальном режиме с правильным авторезизированием маски.

Просто замените

<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14854.2" targetRuntime="iOS.CocoaTouch"

с

<document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="14854.2" targetRuntime="iOS.CocoaTouch.iPad"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top