Как ты это делаешь? Я видел по нему один видеоурок, но экран был слишком маленьким. Кроме того, помимо изменения размера представления, есть ли какие-либо другие важные изменения, которые мне нужно было бы внести в свои приложения для iphone, чтобы преобразовать их в iPad?
Конвертировать iPhone xib в iPad xib?
Ответы (17)
Предположим, у вас есть SDK с Xcode 3,
- Откройте IB.
- Откройте XIB.
- Файл -> Создать версию для iPad с использованием масок с автоизменением размеров.
Я смог сузить круг вопросов до нескольких вещей, поэтому вот шаги, которые у меня сработали:
1) Сделайте копию xib-файла iPhone и добавьте ее в свой проект.
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
Файл может по-прежнему выглядеть как обычный 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.
<...type="com.apple.InterfaceBuilder3.CocoaTouch.XIB"...>
.
- person Julian D.; 30.09.2013
XCode4:
В xcode 4 мы не можем сделать это для одного xib, но мы можем создать соответствующие версии ipad сразу.
Перед настройкой проекта на ipad, если он настроен только для iphone, щелкните правой кнопкой мыши цель и выберите дубликат.
Теперь выберите «дублировать и перейти на ipad». Создается новая цель и новый набор xib-файлов. Это должно сократить некоторые объемы работы.
Надеюсь, поможет.
Xcode 4:
Функция Создание версии iPad с использованием масок автоматического изменения размера была удалена из Xcode 4. На данный момент самый простой способ - использовать Xcode 3 для преобразования, поскольку формат файла пера (.xib) не изменился.
Xcode 3 и 4 теперь могут быть установлены в одной системе, просто выбрав другую папку (см. Инструкции по установке на образе диска).
В противном случае вам нужно будет скопировать / вставить элементы пользовательского интерфейса из версии для iPhone и повторно связать их со своим кодом.
Как насчет того, чтобы позволить компьютеру выполнять его работу?
Быстрее, меньше риск ошибок.
Вот рабочий процесс, основанный на отличном ответе от Jag, но автоматизированный с помощью 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
or
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"
to
targetRuntime = "iOS.CocoaTouch.iPad"
Я задокументирую то, что сделал в Xcode 4.5:
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
Создайте список файлов, которые вы хотите преобразовать, в
fixfile
, в каждой строке будет имя файла без расширения. Если исходное имя файлаAAA_Iphone.h
, просто введитеAAA
. Если ваш исходный файл не соответствует этому шаблону, вам необходимо отредактировать сценарий.Запустить в командной строке
cat fixfile | while read line ; do sed -e "s/REPLACEME/${line}/g" fixpattern.sh ; done > fixall.sh
Просмотрите и запустите
fixall.sh
Добавить вновь созданный файл в проект
Ответ Джага отличный. Но есть загвоздка, если XIB открывается / создается в Xcode 5.
Для Xcode 5
1) Сделайте копию xib-файла iPhone и добавьте ее в свой проект.
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 до универсального в Xcode 4.2. Таким образом, он сделает переход за вас.
Похоже, лучшее решение - всегда сначала разрабатывать как iphone, а затем, когда вы закончите, добавьте цель ipad, позволяя xcode выполнять обновление. Я совершил ту же ошибку, выбрав универсальный для запуска, который создает первые несколько файлов, но затем все остальные xib-файлы приходилось вручную воссоздавать в папке ipad. БОЛЬШАЯ БОЛЬ
Jag has given Great Answer.
В некоторых случаях.
Нет необходимости конвертировать ваш Iphone XIB в Ipad XIB. Вы также можете использовать маску автоматического изменения размера и запустить 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"