Подтвердить что ты не робот

Раскадровка Xcode: Почему в iPad раскадровка показывает размеры iPhone?

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

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

4b9b3361

Ответ 1

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

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

  • Из Xcode щелкните правой кнопкой мыши раскадровку и выберите Open As → Исходный код

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

  • Щелкните правой кнопкой мыши раскадровку и выберите Open As → iOS Storyboard

Теперь раскадровка отобразит все представления в правильном размере.

Ответ 2

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

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

Создайте новую раскадровку, перейдя по ссылке: New → File → User Interface → Storyboard (обязательно выберите Device Family = iPad при выборе параметров.)

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

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

Ответ 3

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

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

"Использовать автоматический макет"

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

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

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

Не забудьте выбрать правильное устройство.

Ответ 4

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

Ответ 5

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

Ответ 6

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