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



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

625   16  

16 ответов:

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

  1. открыть IB.
  2. откройте XIB.
  3. -5-->создать версию iPad с помощью функциями автоматического изменения маски.

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

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

2) щелкните правой кнопкой мыши файл (в xcode) и откройте как > исходный код

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

<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) сохранить файл и открыть как > Interface Builder-iOS

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

в 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 в полноэкранном режиме.

XCode4:

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

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

Теперь выберите "дублировать и переход на ipad".Новая цель и новый набор xibs являются created.It надо сократить какую-то работу.

надеюсь, что это помогает.

Xcode 4:

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

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

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

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

вот рабочий процесс, основанный на отличный ответ от Jag, но автоматизированный с sed.

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

File 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 "" | /usr/bin/sed "s/.xib/~iphone.xib/"`
    `/usr/bin/sed -f iPadToiPhoneXIBConversion.sed "" > "$newXibName"`
    echo "Did convert  to $newXibName."
}

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

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

convertiPadXIBToiPhone MyViewController.xib

или

convertiPhoneXIBToiPad MyViewController.xib

откройте XIB в XCode 4 с помощью " view as source code."

до

резервное копирование пера в вопросе.

один

замените эту слизь

    <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 в De navigator и выберите: "Открыть как..." Открыть как исходный файл.

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

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

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

в XCode 4.3.2 самый простой способ для меня создать iPad-версию xib-это дублировать этот файл 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.Кокосовый орех.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 сделать обновление. Я сделал ту же ошибку, выбрал universal для запуска, который создает первые несколько файлов, но затем каждый другой xib должен был быть воссоздан вручную в папке ipad. Большая боль

Jag has given Great Answer.

В Некоторых Случаях.

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

Comments

    Ничего не найдено.