Як ви це робите? Я бачив на ньому один відеоурок, але екран був замалий. Крім того, крім зміни розміру подання, чи є якісь інші серйозні зміни, які мені довелося б внести до своїх програм iphone для конвертації в iPad?
Відповіді:
Припустимо, у вас SDK з Xcode 3 ,
Я зміг звузити це до кількох речей, тому ось кроки, які працювали для мене:
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) Збережіть файл і відкрийте як> Конструктор інтерфейсів - 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"...>
.
XCode4:
У xcode 4 ми не можемо зробити це для одного xib, але ми можемо створити відповідні версії ipad одночасно.
Перш ніж налаштовувати свій проект на ipad, коли він налаштований лише для iphone, клацніть правою кнопкою миші на цілі та натисніть на копію.
Тепер виберіть "дублікат і перехід на ipad". Створено нову ціль і новий набір xibs. Це має зменшити деяку роботу.
Сподіваюся, це допоможе.
Xcode 4 :
Функцію Створення версії iPad за допомогою масок масштабування було вилучено з Xcode 4. Зараз найпростіший спосіб - використовувати Xcode 3 для перетворення, оскільки формат файлу nib (.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
або
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>
для цього іншого goo
<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 найпростіший спосіб створити версію 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 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) Зробіть копію файлу iPhone xib та додайте його до свого проекту
2) Клацніть файл правою кнопкою миші (у xcode) та відкрийте як> Вихідний код
3) 2-й рядок повинен виглядати так:
<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, також знайдіть "320460" і замініть його на 768,1024, і ваш XIB буде змінено на розміри iPad.
Для Xcode 4,
Вам не потрібно створювати окремі цілі для кожного пристрою. Натомість ви можете змінити Пристрої в зведеному проекті на Універсальні, які вже були б у iPhone. На це відповідає посилання Оновлення iOS 5 App до Universal на 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"