У меня есть iPhone
приложение, в котором есть раскадровка. Теперь я хочу предоставить iPad
заявку тоже. Поэтому я спросил меня, есть ли функция, которая помогает мне преобразовать мою iPhone
раскадровку в iPad
раскадровку.
Чтобы быть конкретным:
Есть ли подобная функция или есть только ручной способ?
Ответы:
Я нашел своеобразное решение:
Дублируйте свой iPhone-раскадровку и переименуйте его
MainStoryboard_iPad.storyboard
Закройте Xcode, а затем откройте этот файл в любом текстовом редакторе.
Найдите
targetRuntime="iOS.CocoaTouch"
и измените его наtargetRuntime="iOS.CocoaTouch.iPad"
Измените код в MainStoryboard_iPad.storyboard из:
<simulatedScreenMetrics key="destination" type="retina4"/>
в<simulatedScreenMetrics key="destination"/>
Теперь сохраните все и снова откройте Xcode. IPad-Storyboard имеет то же содержимое, что и iPhone-файл, но все может быть нарушено.
Это сэкономило мне часы - надеюсь, это поможет вам
источник
start a bounty
под вопросом, выберите желаемую сумму иReward existing answer
...<simulatedScreenMetrics key="destination" type="retina4"/>
на<simulatedScreenMetrics key="destination"/>
Если бы вы создали универсальный проект, по умолчанию была бы создана пустая раскадровка iPad, вам просто нужно выбрать раскадровку iPhone, выбрать все (Command + A), скопировать (Command + C) и вставить ее на раскадровку iPad. Перед компиляцией обязательно переместите точку входа с пустой раскадровки на вновь скопированную раскадровку.
источник
Это не совсем сработало для меня. Я сделал что-то немного другое.
<scenes> <!--Contents View Controller-->
</class> </classes>
Это сработало для меня. Я получил новый макет со всеми подключенными розетками, который сам по себе сэкономил мне несколько часов.
источник
.storyboard
файлам и нажмите,Open As > Source Code
чтобы просмотреть необработанный XML.Прочитав много потоков в stackoverflow, я обнаружил, что решение - это
1.Дублируйте свой iPhone-раскадровку и переименуйте его в MainStoryboard_iPad.storyboard
2. щелкните правой кнопкой мыши на раскадровке -> «открыть как» -> «Исходный код».
3. Найдите targetRuntime = "iOS.CocoaTouch" и измените его на targetRuntime = "iOS.CocoaTouch.iPad".
5. Найдите
<simulatedScreenMetrics key="destination" type="retina4"/>
и измените его на<simulatedScreenMetrics key="destination"/>
4. Теперь сохраните все и щелкните правой кнопкой мыши на MainStoryboard_iPad.storyboard «открыть как» -> «IOS StoryBoard» 5. Возможно, вам также придется изменить свои ограничения. Это все, что вы сделали.
источник
источник
1 - Создайте свой
"MainStoryboard_iPad.storyboard";
2 - Щелкните правой кнопкой мыши
"MainStoryboard_iPhone.storyboard"
и выберите «Открыть как -> Исходный код». Скопируйте все;3- Щелкните правой кнопкой мыши
"MainStoryboard_iPad.storyboard"
и выберите «Открыть как -> Исходный код». Вставь все. Теперь поиск и изменение:targetRuntime="iOS.CocoaTouch" to targetRuntime="iOS.CocoaTouch.iPad"
type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" to type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.iPad.XIB"
4 - Сохранить. Теперь снова откройте, но с помощью конструктора интерфейса. Вам нужно будет только перестроить.
Этот метод можно использовать и для файлов .xib
источник
Это происходит по-другому, но я смог выбрать все и скопировать в раскадровку iPad (~ 35 сцен) и вставить ее в раскадровку iPhone. Размеры сцены были автоматически отрегулированы. Я видел только две проблемы, мне пришлось заменить UISplitViewController (так как это только iPad), и фон по умолчанию стал прозрачным, а не серым (все еще работал над исправлением этого, без ручной установки фона для всего).
РЕДАКТИРОВАТЬ: кажется, по умолчанию фон для UITableView в инспекторе атрибутов довольно странно. Мне пришлось вручную установить фон «Групповой цвет фона представления таблицы» для сгруппированных табличных представлений и «Белый цвет» для негруппированных табличных представлений. Затем он отображался как «По умолчанию» (я полагаю, поскольку он соответствовал жестко заданному значению). - На самом деле, даже проще, изменение с «Сгруппированный» на «Статический» и обратно, похоже, сбрасывает цвет по умолчанию.
источник
Вот кое-что, что сэкономило мне часы и могло бы помочь тем из вас, кто обладает навыками Python.
Последние два месяца я создавал приложение, сосредоточенное только на iPad, итерируя UX с командой.
Сегодня сфокусировался на создании версии для iPhone, выполнил шаги, описанные выше (спасибо!), Но я не хотел тогда изменять размеры всех элементов пользовательского интерфейса из размеров iPad в визуальном редакторе раскадровки.
Поэтому я написал этот маленький скрипт на языке Python для сканирования файла раскадровки на предмет x, y, ширины, высоты и масштабирования всего в пропорции 320./768. Позволил мне тогда просто сосредоточиться на тонких настройках.
Скопируйте раскадровку iPad в новый файл. (например, iPhoneStoryboard.storyboard)
Запустите приведенный ниже скрипт, указав в качестве первого параметра имя файла раскадровки.
Будет создан выходной файл с суффиксом _adjusted.storyboard (например, iPhoneStoryboard.storyboard_adjusted.storyboard)
Надеюсь, поможет...
источник
Перейдите к своему Target Summary и измените устройства на универсальные, затем перейдите вниз и установите версию ipad для любой понравившейся вам раскадровки, включая скопированную и переименованную, если хотите.
источник
Так же, как быстрое замечание для тех, кто, возможно, имел мою проблему с этим:
Моя проблема:
Содержимое раскадровки красиво скопировано в новый файл доски, который я добавил. Тем не менее, это не повлияло бы на мой подготовленный iPad. Заметив, что мне нужно было переключить назначенную раскадровку для цели сборки (см. Изображение), чтобы отобразились изменения.
Я бы опубликовал изображение, если бы у меня были точки, но настройка находится в:
Навигатор проекта в меню источника слева, корневая цель общей вкладки проекта (центральная панель), информация о развертывании (вторая подзаголовок), с выбранной вкладкой кнопки iPad.
Оттуда выберите раскадровку в разделе «основной интерфейс».
Спасибо за пост, я надеюсь, что это упоминание поможет где-то загвоздка.
источник
Просто для удовольствия, в XCode 5.1 и iOS 7.1 мне также нужно было изменить значения "toolVersion" и "systemVersion" следующим образом:
Без этого новый файл раскадровки не будет компилироваться
источник
Используя классы размеров XCode6, вам больше не нужно конвертировать раскадровку в iPad. Одну и ту же раскадровку можно использовать как для iPhone, так и для iPad, что избавляет вас от необходимости обновлять два файла.
Полученная раскадровка совместима с iOS7 +.
Подробнее об этом читайте здесь: https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/AboutAdaptiveSizeDesign.html#//apple_ref/doc/uid/TP40014436-CH6-SW1
Используйте классы размеров, чтобы включить раскадровку или файл XIB для работы со всеми доступными размерами экрана. Это позволяет пользовательскому интерфейсу вашего приложения работать на любом устройстве iOS.
источник
Для Xcode10
Просто дубликат
Main.storyboard
Затем переименуйте файлы в
Main_iPad.storyboard
иMain_iPone.storyboard
Установите соответствующие имена в
.plist
4. Просто выберите правильную раскадровку для настройки.
источник
Эта функциональность теперь встроена. Например, если изменить настройки проекта в «Сведения о развертывании» -> «Устройства с iPhone на Universal», появится следующий диалог:
источник
Я следил за этой веткой, когда вчера меня поразила та же проблема. Шаги, которые я следовал
targetRuntime="iOS.CocoaTouch"
наtargetRuntime="iOS.CocoaTouch.iPad"
<simulatedScreenMetrics key="destination" type="retina4"/>
на<simulatedScreenMetrics key="destination"/>
Вот и все .. Спасибо всем за помощь ..
источник
Самый простой и надежный способ сделать это - скопировать вставку из раскадровки iPad.
Вам нужно будет изменить размер, но это может быть быстрее, чем воссоздание всей раскадровки.
источник
Существует действительно простое решение для версий Xcode, которые поддерживают классы размеров (протестировано в Xcode 7, которая является текущей версией на момент написания). Проверьте в «использовать классы размера» флажок на файл раскадровки ( File Inspector ), убедитесь , что диалоговое окно , которое появляется. Затем снимите этот же флажок - Xcode спросит вас, хотите ли вы использовать эту раскадровку с iPhone или iPad, и соответствующим образом преобразовать экраны в ней. Нет необходимости напрямую редактировать файл раскадровки . Для iPad и iPhone просто скопируйте одну раскадровку и настройте один для iPad и один для iPhone, используя описанный метод.
И прежде чем кто-то предложит использовать классы размера - хотя они и хороши, они менее удобны для сильно настраиваемого пользовательского интерфейса, такого как игры и т. Д.
источник
Другой подход
Добавьте пустой-View-Controller с Navigation-Controller в iPad-раскадровку
Измените класс на класс вашего первого ViewController, используемого для iPhone, "fooViewController"
Добавьте идентификатор раскадровки в раскадровку iPhone «fooViewController_storyboard_identifier» для первого ViewController
Перейти на "fooViewController.m"
Добавить bool Переменная bool
nibWasLoadForIpad=false
Перейти к
viewDidLoad
-Метод(ps. Знайте, проблема в том, что фоновые изображения будут установлены на белый цвет)
источник
Вы должны создать отчет об ошибке с Apple. Можно сказать, что это мой дубликат (10167030), который был открыт с сентября 2011 года. С моей точки зрения, неприятно то, что эта функция существовала в Xcode 3 ...
источник
Спасибо всем за ответы.
Я выполнил описанные выше шаги, но когда я запускал приложение под симулятором или iPad, оно продолжало работать только с раскадровкой iPhone.
По какой-то причине, когда я изменил целевое устройство на Universal вместо iPhone, Xcode (v5.0) не обновил файл app-Info.plist для включения раскадровки iPad, поэтому мне пришлось вручную добавить следующую запись ( используя редактор списков в Xcode):
Основное имя файла раскадровки (iPad) ==> MainStoryboard_iPad
источник
Я просто изменяю (в дополнение к ответу от @tharkay):
и прекрасно работает!
Я использую это в XCode 8.3.3
источник