Преобразование раскадровки с iPhone на iPad - PullRequest
216 голосов
/ 11 декабря 2011

У меня есть приложение iPhone, в котором есть раскадровка. Теперь я хочу предоставить iPad приложение тоже. Поэтому я спросил меня, есть ли функция, которая помогает мне преобразовать мою iPhone раскадровку в iPad раскадровку.

Чтобы быть конкретным:

Есть ли подобная функция или только ручной?

Ответы [ 21 ]

535 голосов
/ 01 января 2012

Я нашел какое-то решение:

  1. Дублируйте свой iPhone-раскадровку и переименуйте его MainStoryboard_iPad.storyboard

  2. Закройте Xcode и затемОткройте этот файл любым текстовым редактором.

  3. Найдите targetRuntime="iOS.CocoaTouch" и измените его на targetRuntime="iOS.CocoaTouch.iPad"

  4. Измените код в MainStoryboard_iPad.Раскадровка от:

    <simulatedScreenMetrics key="destination" type="retina4"/> до

    <simulatedScreenMetrics key="destination"/>

  5. Теперь сохраните все и снова откройте Xcode.IPad-Storyboard имеет то же содержимое, что и iPhone-файл, но все может быть нарушено.

Это сэкономило мне часы - надеюсь, это поможет вам

61 голосов
/ 13 октября 2012

Если бы вы создали универсальный проект, по умолчанию была бы создана пустая раскадровка iPad, вам просто нужно выбрать раскадровку iPhone, выбрать все (Command + A), скопировать (Command + C) и вставить ее на раскадровку iPad.Перед компиляцией обязательно переместите точку входа с пустой раскадровки на вновь скопированную раскадровку.

10 голосов
/ 14 октября 2012

Это не совсем сработало для меня. Я сделал что-то немного другое.

  1. Создание нового файла раскадровки для версии iPad
  2. Откройте новый файл и файл, который я хочу скопировать, в textwrangler (текстовый редактор)
  3. Копировал текст XML из старого файла в новый файл между этими тегами XML
  4. Первый тег <scenes> <!--Contents View Controller-->
  5. Вставить сюда
  6. Конечные теги </class> </classes>

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

8 голосов
/ 24 октября 2013

Из прочтения множества потоков в 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. Возможно, вам также придется изменить свои ограничения.Вот и все, что вы сделали.

8 голосов
/ 10 июля 2013
1. Create New Storyboard file with MainStoryboard_iPad.storyboard
2. Copy All the views from MainStoryboard and paste to MainStoryboard_iPad.storyboard
6 голосов
/ 23 октября 2013

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

5 голосов
/ 08 марта 2012

Это происходит по-другому, но я смог выбрать все и скопировать в раскадровке iPad (~ 35 сцен) и вставить его в раскадровку iPhone.Размеры сцены были автоматически отрегулированы.Я видел только две проблемы, мне пришлось заменить UISplitViewController (так как это только iPad), и фон по умолчанию стал прозрачным, а не серым (все еще работал над исправлением этого, без ручной настройки фона для всего).РЕДАКТИРОВАТЬ: кажется, по умолчанию фон для UITableView в инспекторе атрибутов довольно странно.Мне пришлось вручную установить фон «Цвет фона представления групповой таблицы» для сгруппированных табличных представлений и «Белый цвет» для негруппированных табличных представлений.Затем он отображался как «По умолчанию» (я полагаю, поскольку он соответствовал жестко заданному значению).- На самом деле, даже проще, изменение с «Сгруппированный» на «Статический» и обратно, похоже, сбрасывает цвет по умолчанию.

4 голосов
/ 16 января 2014

Вот кое-что, что сэкономило мне часы и могло бы помочь тем из вас, кто обладает навыками Python.

Последние два месяца я создавал приложение, сфокусированное на простом iPad, выполняющем UX с командой.

Сегодня основное внимание уделялось созданию версии для iPhone, следуя приведенным выше инструкциям (спасибо!), Но мне не хотелось изменять размер всех элементов пользовательского интерфейса из размеров iPad в визуальном редакторе раскадровок.

Итак, я написал этот маленький скрипт на языке python для сканирования файла раскадровки на предмет x, y, ширины, высоты и масштабирования всего на коэффициент 320./768.Позволил мне тогда просто сосредоточиться на тонких настройках.

  1. Скопируйте раскадровку iPad в новый файл.(например, iPhoneStoryboard.storyboard)

  2. Запустите приведенный ниже скрипт с скопированным именем раскадровки в качестве первого параметра.

  3. Создает выходной файл с суффиксом _adjusted.storyboard (например, iPhoneStoryboard.storyboard_adjusted.storyboard)

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

import re
import sys
import math

afile = sys.argv[1]

scale = 320./768.

number_pattern = '[-0-9]+(.[0-9]+)?'
#width_pattern = 'width="[-0-9]+( ?px)?"'
width_pattern = 'width="[-0-9]+(.[0-9]+)?( ?px)?"'
height_pattern = 'height="[-0-9]+(.[0-9]+)?( ?px)?"'
x_pattern = 'x="[-0-9]+(.[0-9]+)?( ?px)?"'
y_pattern = 'y="[-0-9]+(.[0-9]+)?( ?px)?"'


def replacescaledvalue(scale,pattern,sometext,replacefmt) :
    ip = re.search(pattern, sometext, re.IGNORECASE)
    if(ip) :
        np = re.search(number_pattern,ip.group(0))
        if(np) :
            val = float(np.group(0))
            val = int(math.floor(val*scale))
            sval = replacefmt+str(val)+'"'#+'px"'
            newtext = re.sub(pattern,sval,sometext)
            return newtext
    else :
        return sometext

fin = open(afile)
fout = open(afile+"_adjusted.storyboard", "wt")
for line in fin:
    newline = line
    newline = replacescaledvalue(scale,width_pattern,newline,'width="')
    newline = replacescaledvalue(scale,height_pattern,newline, 'height="')
    newline = replacescaledvalue(scale,x_pattern,newline, 'x="')
    newline = replacescaledvalue(scale,y_pattern,newline, 'y="')
#   print newline
    fout.write( newline )

fin.close()
fout.close()
3 голосов
/ 21 августа 2013

Так же, как быстрое замечание для тех, кто, возможно, имел мою проблему с этим:

Моя проблема:

Содержимое раскадровки красиво скопировано в новый файл доски, который я добавил. Тем не менее, это не повлияло бы на мой подготовленный iPad. Заметив, что мне нужно было переключить назначенную раскадровку для цели сборки (см. Изображение), чтобы отобразились изменения.

Я бы опубликовал изображение, если бы у меня были точки, но настройка находится в:

Навигатор проекта в исходном меню слева, корневая цель общей вкладки проекта (центральной панели), информация о развертывании (второй подзаголовок) с выбранной вкладкой кнопки iPad.

Оттуда выберите раскадровку в разделе «основной интерфейс».

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

3 голосов
/ 26 февраля 2013

Перейдите к своему Target Summary и измените устройства на универсальные, затем перейдите вниз и установите версию ipad для любой понравившейся вам раскадровки, включая скопированную и переименованную, если хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...