2012-03-26 3 views
19

У меня есть универсальное приложение, которое использует раскадровки. Существует раскадровка iPhone и раскадровка iPad. Тем не менее, в построителе интерфейса, viewcontrollers для раскадровки iPad все еще имеют размер для iPhone. Как мне получить раскадровку iPad, чтобы показать контроллеры просмотра iPad размером с iPad?Xcode раскадровка: Почему в iPad раскадровки показывают размеры iPhone?

Я понимаю, что дисплей диспетчера представлений в построителе интерфейсов - это только коньяк с дизайном и временем, но с VC с размером экрана iPhone очень сложно правильно выложить пользовательский интерфейс.

ответ

53

После некоторого копания через исходный код раскадровки, выясняется, что раскадровка iPad была скопирована с раскадровки iPhone. Итак, на самом деле возник вопрос, как преобразовать раскадровку iPhone в раскадровку iPad?

Ответ на удивление простой. Я побежал через this SO answer - преобразовать раскадровку iPhone к IPad раскадровку, выполните следующие действия:

  1. От Xcode, щелкните правой кнопкой мыши на раскадровке и выберите Открыть как -> исходный код

  2. Искать targetRuntime="iOS.CocoaTouch" и изменить его на targetRuntime="iOS.CocoaTouch.iPad"

  3. щелкните правой кнопкой мыши на раскадровке снова и выберите Открыть как -> IOS Раскадровка

Раскадровка теперь отображает все виды в правильном размере.

+0

Большое спасибо. Это сводило меня с ума. – rmvz3

+1

Спасибо, Майкл! В качестве примечания это также можно сделать на XIB. Корневой элемент XIB xml (тег документа) имеет ту же ссылку на «targetRuntime». Сделайте так, как советует Майкл. – bladnman

+0

Я сделал это, и теперь он показывает iPad только для предварительного просмотра (iPhone ушел). любая идея почему? – Kashif

7

Когда вы впервые создаете раскадровку, вы выбираете семейство устройств (iPhone или iPad), на которые нацеливается раскадровка. Я не знаю, как изменить семейство устройств, когда раскадровка уже создана.

Однако, чтобы решить вашу проблему, я рекомендую следующее:

Создать новую раскадровку, перейдя в: New -> Файл -> Интерфейс пользователя -> Раскадровка (Обязательно выберите Device Family = IPad при выборе варианты.)

Перейдите на свой старый раскадровки, выберите и скопируйте все, нажав Command-A, Command-C. Затем перейдите к своему и вставьте все, нажав Command-V. Теперь ваши контроллеры будут иметь размер iPad.

Вы можете удалить старую раскадровку и переименовать новую раскадровку в любое старое имя.

+0

Кажется странным, что вы можете фактически скопировать/вставить всю доску истории. –

+0

Ничего себе, понятия не имел, что это возможно, спасибо! Прекрасно работает. – tcd

+0

Я не получаю выбор семейства устройств, когда создаю новую раскадровку. Версия Xcode - 6.2. – septerr

0

Я использовал предложенный ответ, чтобы преобразовать раскадровку iPhone в раскадровку iPad, и она отлично поработала для большинства моих просмотров. Тем не менее, я понял, что одна из мнений по-прежнему была размером с iPhone. Причина была в том, что я заблокировал все свойства одного фонового изображения (потому что я не хотел случайно его перемещать). Снятие блокировки повернуло вид назад в iPad размером. Это может помочь кому-то застрять на этом.

+0

Я также скопировал раскадровку iPhone для iPad, и все представления отлично работают только 2 textViews. Не могли бы вы рассказать мне, как отключить этот замок или где этот параметр доступен, потому что я не заблокировал что-либо на своей раскадровке iPhone. Спасибо – Husyn

0

Убедитесь, что вы установили правильную раскадровку в цель> Общие. Этот вид вещей вызывает у меня головную боль в течение 3 часов, прежде чем я понимаю, что я установил одну и ту же раскадровку для iPhone в качестве своей раскадровки для iPad.

0

Изменение целевого Runtime не работает для меня в Xcode 6.2, однако этот второй метод ручного копирования над представлениями сделал трюк.

3

Этот ответ не является решением, но поможет получить одну из причин, почему такие вещи случаются.

Проблема возникает при попытке отключить:

"Use Auto Layout"

Когда вы снимете его, то появится всплывающее окно. Существует выбор:

"Хранить данные класса размера для: iPhone", по умолчанию выбран iPhone (независимо от того, который IPad или iPhone проект, который вы создали).

Если вы не будете упоминать о нем, ваша раскадровка будет автоматически преобразован в iPhone размером.

Не забудьте выбрать подходящее устройство.

+0

Прохладный !! этот сделал это для меня – becker

Смежные вопросы